最近專案中使用了集群版的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 下面詳細介紹這些表 事務...