設置mysql表名不區分大小寫


查看mysql版本:

[root@localhost logs]# mysql -V
mysql  Ver 14.14 Distrib 5.6.37, for linux-glibc2.12 (x86_64) using  EditLine wrapper

lower_case_table_names參數詳解:

lower_case_table_names=1

其中0:區分大小寫,1:不區分大小寫

查詢當前設置:

mysql> show variables like '%lower%';
--------------
show variables like '%lower%'
--------------

+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+
2 rows in set (0.00 sec)

mysql> 

網上大多數的帖子的修改流程如下:

1、用root登錄,修改 /etc/my.cnf

2、在[mysqld]節點下,加入一行: lower_case_table_names=1

3、重啟MySQL : service mysql restart

在這個版本的mysql(5.7.18)下有個坑(其他版本沒試過,不知道有沒有),如果之前有大寫的表,那么修改參數后改表會提示不存在,而且也無法修改,你的應用就掛了!!!

原因如下:

如果在lower_case_table_names=0情況下已經導入了大量的表和數據,表名有大寫,有小寫,此時再換成lower_case_table_names=1會出錯。

解決辦法是在lower_case_table_names=0下將表名全部改成小寫的;如果有數據庫名稱中存在大寫字母,也要在此時改名,改名方法為新建一個小寫的數據庫, 再改表名:

假設源庫名是’ABC’,目標庫名是’abc’,

首先創建目標庫

mysql> create database abc;

獲取所有源庫的表名

mysql> use information_schema;

mysql> select table_name from tables where table_schema='ABC';

然后按照以下命令一個個修改

mysql> rename table ABC.T1 to abc.t1;

一個個執行下來之后表就轉到新的庫里面了.

—注意abc.t1中一定全是小寫字母;

全部改名之后,再設置lower_case_table_names=1,重啟MySQL


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM