Mysql

Linux 上的 MySQL 區分大小寫的表名

  • June 29, 2016

將 MySQL 數據庫從 Windows 移動到 Linux 我有一個問題,即在 Linux 上,表的名稱區分大小寫。這是一個問題,因為我正在開發的 Java 應用程序找不到表。

我已經更改了我的/etc/mysql/my.cnf文件添加行:

lower_case_table_names=1

但這並沒有改變什麼。

我的伺服器版本是: 5.1.61-0ubuntu0.11.10.1 (Ubuntu)

如何配置 MySQL 以忽略表名中的大小寫?

僅僅改變 lower_case_table_names 設置是不夠的。它需要在您導入數據庫之前完成。

MySQL 5.1 文件列出了在 Windows 和 Linux/UNIX 之間移動的過程。這將確保遵循您想要的強制區分大小寫的規則。查看並驗證您是否以正確的順序執行了這些步驟:

要轉換一個或多個整個數據庫,請在設置 lower_case_table_names 之前轉儲它們,然後刪除數據庫,並在設置 lower_case_table_names 後重新載入它們:

1 - 使用 mysqldump 轉儲每個數據庫:

mysqldump –databases db1 > db1.sql

mysqldump –databases db2 > db2.sql

…對必須重新創建的每個數據庫執行此操作。

2 - 使用 DROP DATABASE 刪除每個數據庫。

3 - 停止伺服器,lower_case_table_names在文件[mysqld]部分設置\etc\mysql\my.cnf,然後重新啟動伺服器。

4 - 重新載入每個數據庫的轉儲文件。因為設置了 lower_case_table_names,所以每個數據庫和表名將在重新創建時轉換為小寫:

mysql < db1.sql

mysql < db2.sql

引用自:https://dba.stackexchange.com/questions/16198