在linux環境下表名是區分大小寫的
問題
執行SHOW VARIABLES LIKE '%lowercasetable_names%' 輸出結果:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICMyYTMvw1dvwlMvwlM3VWaWV2Zh1Wa-cmbw5SM3hXcsRja65mNvw1N0EDNxcTNtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
其中 0:區分大小寫,1:不區分大小寫
解決辦法
在mysql的配置檔案中添加 lowercasetable_names=1
實際解決方式
- 先查找mysql使用的配置檔案
- 添加配置
- 重新開機mysql
- 檢視是否生效
查找mysql配置檔案
locate my.cnf 沒有找到
[root@iZblz0hZ mysql]# locate my.cnf
-bash: locate: command not found
複制
正常情況使用locate my.cnf指令可以列出所有的my.cnf檔案
ps指令檢視是否使用了指定目錄的my.cnf 沒有找到
[root@iZbts0ohz0hZ ~]# ps aux|grep mysql|grep 'my.conf'
複制
檢視mysql預設讀取my.cnf的目錄
[root@iZbpohz0hZ ~]# mysql --help|grep 'my.cnf'
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
複制
去對應的目錄中查找時,沒有找到。于是,在/etc目錄下建立my.cnf檔案,檔案中的内容為:
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/work1/soft/mysql
datadir=/work1/soft/mysql/data
socket=/work1/soft/mysql/mysql.sock
#設定忽略大小寫(簡單來說就是sql語句是否嚴格),預設庫名表名儲存為小寫, 不區分大小寫
lower_case_table_names=1
# 開啟ip綁定
#bind-address = 0.0.0.0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/work1/soft/mysql/data/mysqld.pid
#指定用戶端連接配接mysql時的socket通信檔案路徑
[client]
socket=/work1/soft/mysql/mysql.sock
default-character-set=utf8
複制
重新開機mysql
執行service mysql restart
檢視是否生效
SHOW VARIABLES LIKE '%lowercasetable_names%';
可以看到修改成功。