背景
今天准備上線的環境,往服務器上布服務,某個功能查詢報錯,覺得很奇怪,環境一樣,代碼一樣,數據一樣,為何呢,看了一眼sql。本地運行正常,上線環境報錯,報錯信息缺少某列。仔細一看,where 條件的列別名是大寫的,表別名是小寫。大概就是這個意思 select aaa from b where B.aaa = '1' 。心想,mysql不是不區分大小寫嗎。難道上線環境是區分的,一查還真是。。於是修改了一下,在此提供給大家修改方式。
解決方案
查看mysql是否開啟了區分大小寫。
show variables like '%case_table%';
lower_case_table_names=1(說明是不區分大小寫的)
lower_case_table_names=0(如上圖為0說明區分大小寫的)
linux下修改
進入etc下面
cd /etc/
編輯my.cnf文件
vi my.cnf
最后一行加上下面一句
lower_case_table_names=1
重啟mysql:
service mysql restart
windows下修改
到安裝mysql的目錄,修改my.ini文件
在文件最后一行加上下面一句話
lower_case_table_names=1
重啟mysql。