Linux中Mysql區分大小寫解決方法

2021-08-27 19:56:16 字數 1969 閱讀 9320

windows下安裝的mysql預設是不區分大小寫的,而linux下安裝的mysql預設是區分大小的,包括對資料庫名、表名、表的的別名和變數名區分大小寫,而對列名和列的別名不區分大小寫。下面針對這種情況進行驗證並作出相應的解決方法。

現在mysql中有乙個資料庫為mytest,它有乙個資料表user(name,***),表中存放有一條資料。以下分別對資料庫名,表名,表的別名,列名進行大小寫區別驗證。

a.預設對資料庫名區分大小寫

由於建立的資料庫為全部小寫mytest,當大小寫混合輸入use mytest時,提示未知資料庫,即查詢不到對應的資料庫名,而小寫輸入use mytest時,查詢正常,因此可以說明預設對資料庫名區分大小寫。

b.預設對錶名區分大小寫

當查詢時用表名的大寫user,提示表名不存在,而當用小寫user時查詢正常,可以說明預設對資料表區分大小寫。

c.預設對錶的別名區分大小寫

用t作為表user的別名,當查詢列「name」的值用大寫的t時提示未知列名,而用小寫t時查詢正常,可以說明預設對錶的別名區分大小寫。

d.對列名不區分大小寫

由上面可以看出,不管列名用大寫name還是用小寫name,都可以正常查詢,可以說明對列名不區分大小寫。

a.用root賬號登陸linux系統,在/etc/my.cnf檔案中的[mysqld]後新增lower_case_table_names=1,如下:

儲存並退出。

b.重啟資料庫

經過上面的操作,就可以令mysql忽略對大小寫的敏感。

注意:

①lower_case_table_names 設定為0,表示區分大小寫;lower_case_table_names 設定為1,,表示忽略大小寫,建立的資料庫,表都是以小寫形式存放在磁碟上,對於sql語句都是轉換為小寫對錶和db進行查詢;

②當設定了lower_case_table_names = 1時,需要先將原來的資料庫名和表名轉換為小寫,再重啟資料庫例項,否則就會出現資料庫名和表名不存在的情況,所以要想忽略大小寫,還需要提前將大寫資料庫名和表名更改為小寫,否則會報錯,另外資料庫名無法rename可以新建乙個小寫的資料庫名;

③如果在/etc或/etc/mysql下沒有找到my.cnf的話,需要從其它地方拷貝過來,這是因為使用rpm方式安裝時,預設是沒有在/etc或/etc/mysql目錄下生成my.cnf的,我們可以在/usr/share/mysql/下找到*.cnf檔案,拷貝其中的乙個放到/etc下並更名為my.cnf,然後再按上面的方法進行即可。

a.驗證資料庫名:

由以上看出,已忽略對資料庫名大小寫的區分。

b.驗證表名:

由以上看出,已忽略對錶名大小寫的區分。

c.驗證表的別名:

由以上看出,已忽略對錶的別名大小寫的區分。

至此,關於linux中mysql預設對大小寫區分的解決方法已完成。

mysql區分大小寫嘛 Mysql區分大小寫問題

在 mysql 中,資料庫和表其實就是資料目錄下的目錄和檔案,因而,作業系統的敏感性決定資料庫和表命名的大小寫敏感。這就意味著資料庫和表名在 windows 中是大小寫不敏感的,而在大多數型別的 unix linux 系統中是大小寫敏感的。mysql大小寫敏感可以通過配置檔案的lower case ...

mysql 怎麼區分大小寫 MYSQL區分大小寫

mysql區分大小寫 1 linux下mysql安裝完後是預設 區分表名的大小寫,不區分列名的大小寫 2 用root帳號登入後,在 etc my.cnf 中的 mysqld 後新增新增lower case table names 1,重啟mysql服務,這時已設定成功 不區分表名的大小寫 lower...

mysql在linux下區分大小寫

用root帳號登入後,在 etc my.cnf 中的 mysqld 後新增新增lower case table names 1,重啟 mysql 服務,這時已設定成功 不區分表名的大小寫 lower case table names引數詳解 lower case table names 0 其中0 ...