今天小編就爲大家分享一篇關於MySQL數據庫大小寫敏感的問題,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
在MySQL中,數據庫對應數據目錄中的目錄。數據庫中的每個表至少對應數據庫目錄中的一個文件(也可能是多個,取決於存儲引擎)。因此,所使用操作系統的大小寫敏感性決定了數據庫名和表名的大小寫敏感性。這說明在大多數Unix中數據庫名和表名對大小寫敏感,而在Windows中對大小寫不敏感。 一個顯著的例外情況是Mac OS X,它基於Unix但使用默認文件系統類型(HFS+),對大小寫不敏感。
在windows下表名不區分大小寫,所以在導入數據後,有可能所有表名均爲小寫,而再從win導入linux後,在調用時就容易出現大小寫的問題。例如:
第一點:程序調用表名爲:codetc_Web;
第二點:導入win後變爲codetc_web;
第三點:再導入linux後也是codetc_web,此時linux會區分表名的大小寫,則導致該表無法讀取。
在linux下mysql表名大小寫問題解決方法:
修改my.cnf,一般位於:/etc/my.cnf,在該文件中找到[mysqld]節下加入如下語句(注意如果已經存在該語句,請將值改爲1即可):
lower_case_table_names=1
1、Linux下mysql安裝完後是默認:區分表名的大小寫,不區分列名的大小寫;
2、用root帳號登錄後,在/etc/my.cnf 中的[mysqld]後添加添加lower_case_table_names=1
,重啓MYSQL服務,這時已設置成功:不區分表名的大小寫;
lower_case_table_names 參數詳解:
lower_case_table_names = 0或1
其中 0:區分大小寫,1:不區分大小寫
MySQL在Linux下數據庫名、表名、列名、別名大小寫規則是這樣的:
1、數據庫名與表名是嚴格區分大小寫的;
2、表的別名是嚴格區分大小寫的;
3、列名與列的別名在所有的情況下均是忽略大小寫的;
4、變量名也是嚴格區分大小寫的;
MySQL在Windows下都不區分大小寫的,如果需要在查詢時區分字段值的大小寫,則需要將查詢字段值需要設置BINARY屬性,設置的方法有如下幾種方法:
(1)創建時設置:
CREATE TABLE T(A VARCHAR(10) BINARY);
(2)使用alter修改:
ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;
(3)mysql table editor中直接勾選BINARY項。
要讓mysql查詢區分大小寫,可以:
select * from table_name where binary a like 'a%' select * from table_name where binary a like 'A%'
也可以在建表時,加以標識
create table table_name( a varchar (20) binary )
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對神馬文庫的支持。如果你想了解更多相關內容請查看下面相關鏈接