設定mysql表名不區分大小寫

2022-08-23 21:45:09 字數 1567 閱讀 3654

檢視mysql版本:

[root@localhost logs]# mysql -v

mysql ver

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

設定mysql表名不區分大小寫

設定mysql表名不區分大小寫,mysql版本 root web mysql v mysql ver 14.14 distrib 5.7.18,for linux x86 64 using editline wrapperlower case table names引數詳解 lower case t...

MySQL表名不區分大小寫的設定方法

原來linux下的mysql預設是區分表名大小寫的,通過如下設定,可以讓mysql不區分表名大小寫 1 用root登入,修改 etc my.cnf 2 在 mysqld 節點下,加入一行 lower case table names 1 3 重啟mysql即可 其中 lower case table...

MySQL表名不區分大小寫的設定方法

原來linux下的mysql預設是區分表名大小寫的,通過如下設定,可以讓mysql不區分表名大小寫 1 用root登入,修改 etc my.cnf 2 在 mysqld 節點下,加入一行 lower case table names 1 3 重啟mysql即可 其中 lower case table...