在linux環境下,mysql默認表明是區分大小寫的,我們可以查看全局變量發現:
mysql> show variables like 'lower%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
+------------------------+-------+
2 rows in set (0.00 sec)
lower_case_file_system? 是一個只讀參數,無法被修改,這個參數是用來告訴你在當前的系統平臺下,是否對文件名大小寫敏感。
lower_case_table_names: 此參數不可以動態修改,必須重啟數據庫
lower_case_table_names=0 ?表名存儲為給定的大小和比較是區分大小寫的
lower_case_table_names = 1 ?表名存儲在磁盤是小寫的,但是比較的時候是不區分大小寫
lower_case_table_names=2, 表名存儲為給定的大小寫但是比較的時候是小寫的
當在表明區分大小寫的清空下我們混用大小寫是會報錯的,如下:
mysql> show tables like 'black%';+-------------------------+
| Tables_in_exam (black%) |
+-------------------------+
| black_unit |
| blacklist |
+-------------------------+
2 rows in set (0.00sec)
mysql> select * fromBlacklist;
ERROR1146 (42S02): Table 'exam.Blacklist' doesn't exist
解決辦法:
如果直接修改的話是會報錯的,全局只讀變量不可以修改。
mysql> set global lower_case_table_names=1;
ERROR1238 (HY000): Variable 'lower_case_table_names' is a read only variable
最終解決辦法:
1.? ?修改/etc/my.cnf, [mysqld]下面加一行:
lower_case_table_names=1
如下:
2.重啟mysql服務并且查看全局變量的值
mysql> show variables like 'lower%';+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 1 |
+------------------------+-------+
2 rows in set (0.00 sec)
3.再次驗證是否區分大小寫:
mysql> select * fromBLACKLIST;
Emptyset (0.00 sec)
至此配置成功!