Linux下MySQL資料表名大小寫

2021-08-14 21:40:05 字數 1548 閱讀 9175

最近專案中使用了集群版的quartz定時器,再加上部署環境重新部署,這個quartz的資料庫沒少出問題啊!說乙個最尷尬的問題吧,專案一共部署了三套環境,開發,聯調,測試,同樣的**以及環境配置,可是啟動專案的時候一會兒提示找不到qrtz_locks一會兒提示找不到qrtz_locks,quartz集群的表均有這個問題,然後根據提示修改表名專案就完美啟動,你說尷不尷尬!!!

因為專案之前也部署過,在加上這樣的問題,首先排除了專案本身的問題。就從資料庫的表名開始著手解決。

眾所周知 windows本身是不區分大小寫的,而linux下卻有嚴格的區分界限,剛好mysql是部署到centos7上的,經過查詢發現linux對大小寫是敏感的,尤其在開發quartz模組的時候,quartz內部查詢資料的語句是大寫的,如qrtz_locks、qrtz_triggers等這些內部表。

把linux上設定為對大小寫不敏感不就行啦!但是如何判定當前的資料配置是否區分大小寫呢?

使用show variables like '%table_names'檢視lower_case_table_names的值

lower_case_table_names引數詳解:

其中 0:區分大小寫,1:不區分大小寫

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

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

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

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

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

如果想在查詢時區分字段值的大小寫,則:字段值需要設定binary屬性,設定的方法有多種:

a、建立時設定:

create table t(

a varchar(10) binary

);b、使用alter修改:

alter table`tablename` modify column `cloname` varchar(45) binary;

c、mysql tableeditor中直接勾選binary項。

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

1、 linux上的mysql預設是區分大小寫,如果需要不對大小寫敏感的話需要在linux上的mysql的配置檔案/etc/my.cnf中加入一行**:

lower_case_table_names=1

2、修改完配置之後,一定要重啟資料庫:

service mysqld restart

3、再次查詢資料表,這時發現不管查詢sql語句中的表名是大寫還是小寫都提示找不到此表了。

原因是修改配置之後,會導致原來的大寫的表名無法識別,這一點要特別注意。

解決辦法是:

(1)在修改配置之前一定先將所有表的表結構和表資料匯出做備份;

(2)刪除原來的表;

(3)修改配置;

(4)將表結構和表資料匯入。

按照上面的步驟操作之後,再次查詢資料表,表名就不區分大小寫了。

遇到這種問題還是花費了半個小時候去解決!!!歸根到底還是自己的知道內容太少啊!各個方面的知識都需要不斷補充!繼續努力吧!

Linux下MySQL資料表名大小寫問題例項

最近專案中使用了集群版的quartz定時器,再加上部署環境重新部署,這個quartz的資料庫沒少出問題啊!說乙個最尷尬的問題吧,專案一共部署了三套環境,開發,聯調,測試,同樣的 以及環境配置,可是啟動專案的時候一會兒提示找不到qrtz locks一會兒提示找不到qrtz locks,quartz集群...

mysql資料表命令是 MySQL資料表操作命令

mysql語句 1 修改表名 rename table 舊表名 to 新錶名 2 修改字段型別 alter table 表名 modify column 欄位名 字段型別 長度 3 修改欄位名稱和型別 alter table 表名 change 現有欄位名稱 修改後欄位名稱 資料型別 4 增加字段 ...

MySQL資料表型別

mysql資料表支援六種型別 分別是 bdb heap isam merge myisam innobdb,這六種又分為兩類,單獨一類是bdb,稱為 事務安全型 transaction safe 其餘都屬於第二類,稱為 非事務安全型 non transaction safe 下面詳細介紹這些表 事務...