LINUX下mysql的大小寫區分問題

2021-06-02 02:54:39 字數 2883 閱讀 9808

1、linux下mysql安裝完後是預設:區分表名的大小寫,不區分列名的大小寫;

織夢內容管理系統

2、用root帳號登入後,在/etc/my.cnf 中的[mysqld]後新增新增lower_case_table_names=1,重啟mysql服務,這時已設定成功:不區分表名的大小寫;

內容來自dedecms

lower_case_table_names引數詳解:

lower_case_table_names = 0

織夢好,好織夢

mysql在linux下資料庫名、表名、列名、別名大小寫規則是這樣的: 織夢好,好織夢

1、資料庫名與表名是嚴格區分大小寫的;

內容來自dedecms

2、表的別名是嚴格區分大小寫的;

dedecms.com

3、列名與列的別名在所有的情況下均是忽略大小寫的; 織夢好,好織夢

4、變數名也是嚴格區分大小寫的; dedecms.com

mysql在windows下都不區分大小寫。 dedecms.com

3、如果想在查詢時區分字段值的大小寫,則:字段值需要設定binary屬性,設定的方法有多種: 織夢內容管理系統

a、建立時設定:

create table t(

a varchar(10) binary

); b、使用alter修改:

c、mysql table editor中直接勾選binary項。

在mysql中,資料庫對應資料目錄中的目錄。資料庫中的每個表至少對應資料庫目錄中的乙個檔案(也可能是多個,取決於儲存引擎)。因此,所使用作業系統的大小寫敏感性決定了資料庫名和表名的大小寫敏感性。這說明在大多數unix中資料庫名和表名對大小寫敏感,而在windows中對大小寫不敏感。乙個顯著的例外情況是mac os x,它基於unix但使用預設檔案系統型別(hfs+),對大小寫不敏感。然而,mac os x也支援ufs卷,該卷對大小寫敏感,就像unix一樣。參見1.8.4節,「mysql對標準sql的擴充套件」。

注釋:儘管在某些平台中資料庫名和表名對大小寫不敏感,不應在同一查詢中使用不同的大小寫來引用給定的資料庫或表。下面的查詢不會工作,因為它同時引用了表my_tables和asmy_tables:

mysql>select * from my_table where my_table.col=1;
列、索引、儲存子程式和觸發器名在任何平台上對大小寫不敏感,列的別名也不敏感。

預設情況,表別名在unix中對大小寫敏感,但在windows或mac os x中對大小寫不敏感。下面的查詢在unix中不會工作,因為它同時引用了別名a和a:

mysql>selectcol_namefromtbl_nameas a
->where a.col_name= 1 or a.col_name= 2;
然而,該查詢在windows中是可以的。要想避免出現差別,最好採用一致的轉換,例如總是用小寫建立並引用資料庫名和表名。在大多數移植和使用中建議使用該轉換。

在mysql中如何在硬碟上儲存和使用表名和資料庫名由lower_case_tables_name系統變數確定,可以在啟動mysqld時設定。lower_case_tables_name可以採用下面的任一值:

含義

使用create table或create database語句指定的大寫和小寫在硬碟上儲存表名和資料庫名。名稱比較對大小寫敏感。在unix系統中的預設設定即如此。請注意如果在大小寫不敏感的檔案系統上用--lower-case-table-names=0強制設為0,並且使用不同的大小寫訪問myisam表名,會導致索引破壞。

表名在硬碟上以小寫儲存,名稱比較對大小寫敏感。mysql將所有表名轉換為小寫以便儲存和查詢。該行為也適合資料庫名和表的別名。該值為windows和mac os x系統中的預設值。

表名和資料庫名在硬碟上使用create table或create database語句指定的大小寫進行儲存,但mysql將它們轉換為小寫以便查詢。名稱比較對大小寫敏感。注釋:只在對大小寫不敏感的檔案系統上適用!innodb表名以小寫儲存,例如lower_case_tables_name=1。

在windows和mac os x中,lower_case_tables_name的 預設值是1。

如果只在乙個平台上使用mysql,通常不需要更改lower_case_tables_name變數。然而,如果你想要在對大小寫敏感不同的檔案系統的平台之間轉移表,會遇到困難。例如,在unix中,my_tables和my_tables是兩個不同的表,但在windows中,這兩個表名相同。要想避免由於資料庫或表名的大小寫造成的資料轉移問題,可使用兩個選項:

?        在任何系統中可以使用lower_case_tables_name=1。使用該選項的不利之處是當使用show tables或show databases時,看不出名字原來是用大寫還是小寫。

?        在unix中使用lower_case_tables_name=0,在windows中使用lower_case_tables_name=2。這樣了可以保留資料庫名和表名的大小寫。不利之處是必須確保在windows中查詢總是用正確大小寫引用資料庫名和表名。如果將查詢轉移到unix中,由於在unix中大小寫很重要,如果大小寫不正確,它們不工作。

例外:如果你正使用innodb表,在任何平台上均應將lower_case_tables_name設定為1,以強制將名轉換為小寫。

請注意在unix中將lower_case_tables_name設定為1之前,重啟mysqld之前,必須先將舊的資料庫名和表名轉換為小寫。

linux下mysql忽略大小寫

在liunx系統下安裝mysql,發布程式時連線報大寫的表名不存在的錯誤。研究了一下,原來mysql在windows上是不區分表名大小寫的,所以能正常執行。但是在linux上由於mysql預設是卻分大小寫的,所以程式會出錯。最簡單的方法當然是修改linux上mysql的配置檔案,修改為忽略大小寫就可...

Linux下MySQL大小寫敏感設定

window下的mysql是忽略大小寫的而在linux下mysql預設是區分大小寫,在linux下建表時候如果表名使用大寫,查詢時候使用小寫查詢會提示表不存在。解決辦法 mysql是通過lower case table names變數來處理大小寫問題的。首先查詢該變數 登入mysql show va...

mysql限制大小寫 mysql對大小寫的限制問題

今天研發人員問我,mysql對大小寫有限制嗎?我想都沒想,說沒限制。過了一會兒,研發人員告訴我說linux下是有限制的。我頓時有種打自己臉的感覺。對於自己不確定的問題,一定得想清楚,查明白了再說。在windows和mac os中,lower case tables name的預設值是1.如果只是在乙...