linux下Mysql的大小寫敏感

現象

windows開發環境下一切正常,部署到linux服務器上後,啓動系統報以下錯誤:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'soc.QRTZ_LOCKS' doesn't exist

錯誤信息:找不到soc數據庫下的QRTZ_LOCKS表!但是我打開navicat看到soc庫下是存在qrtz_locks表的,而且同樣的數據庫和代碼在windows下是沒問題的。

問題

1:mysql對字段名,表名,數據庫名是敏感的;

2:但是在windows下是默認不敏感,在linux下默認是敏感的;

3:所以windows下,在代碼中訪問mysql的QRTZ_LOCKS表時,mysql可以用它的qrtz_locks表來接受sql請求;

4:但是在linux下,如果在代碼中訪問mysql的QRTZ_LOCKS表時,mysql不會用qrtz_locks表來接受sql請求,而會報找不到QRTZ_LOCKS表的錯誤。

解決方案

在windows下執行命令,查看mysql系統變量可以看到如下:

show variables like '%lower_case_table_names%';

這裏寫圖片描述

值爲1,表示是大小寫不敏感,而linux下的mysql的此係統變量是0,表示是大小寫敏感

可以修改linux下mysql的此係統變量的值爲1,讓其大小寫不敏感就可以解決開頭說的問題了。

linux下修改大小寫敏感的系統變量

1:找到mysql的配置文件

/etc/mysql/mysql.conf.d/mysqld.cnf

2:在[mysqld]標籤下添加

lower_case_table_names=1

mysql配置

3:重啓mysql服務,並查看該系統變量,會發現變量值已經變爲1。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章