在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查詢區分大小寫,可以:
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
)
Mysql大小寫敏感問題
開發十年,就只剩下這套架構體系了!前幾天專案發布到centos上去,訪問登入介面沒問題,一點登入就有問題,有點懷疑是資料庫連線異常了。今天找到了問題的所在。先描述下找問題的流程 在終端輸入tail f catalina.ou命令能實時看到tomcat的輸出,我這問題就很明顯了,就是找不到對應的表,為...
資料庫大小寫敏感設定
設定資料庫大小寫敏感 create database dbsen in datadbs1 with log nlscase sensitive 字元型別的char lvarchar varchar nchar nvarchar 均視為區分大小寫的。設定資料庫大小寫不敏感 create databas...
MySQL大小寫敏感
mysql大小寫敏感的解決方案 注 關於lower case table names引數對錶名稱或資料庫名稱大小寫敏感的控制。unix下預設為0,也就是大小寫敏感的 windows下預設為1,不敏感 macos預設為2,儲存區分大小寫,但是在查詢時會轉換為小寫。對於在大小寫不敏感的系統 window...