2011-06-06 61 views
34

我正在研究Windows中的MySQL數據庫。如何強制區分大小寫的表名稱?

我必須將它移到Linux環境中。 MySQL數據庫包含很多表格和存儲過程,它們都是CASE SENSITIVE。

當我備份我的數據庫時,所有表名都被強制爲小寫,所以當我在Linux中恢復它時,它會抱怨,因爲你無法制作重複的表和存儲過程。

我無法訪問linux環境中的MySQL配置,所以我不能將MySQL設置更改爲不區分大小寫模式。

有沒有辦法強制MySQL(v5.x)在Windows中使用區分大小寫的表名?

+3

令人驚訝的是,從MySQL 5.1升級到MySQL 5.5解決了我的問題!現在我可以在Windows環境中使用區分大小寫的表名,儘管仍然不可能創建兩個名稱相同的表,但字母大小不同(即table_1和TABLE_1),當然我從不想這樣做! – 2011-07-10 18:34:00

回答

3

不幸的是,在windows上使MySQL不能像在Linux中一樣運行100%。你可以做的是在Virtual BoxVMware playerTurnKey - MySQL Appliance上運行一個最小的虛擬機。

以我個人的經驗,我發現使用類似於部署環境的配置來診斷問題的VM非常有用。

41

閱讀全部這樣的:http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

然後這個系統變量添加到的my.ini底部和重啓MySQL:

/my.ini:的lower_case_table_names = 2

+1

這對我有效!現在,如果只有模式名稱也是區分大小寫的...... – 2012-07-21 20:42:46

+1

請注意,只適用於不區分大小寫的文件系統,例如Mac和Windows,但不是Linux,因爲Linux的默認fs是區分大小寫的(但是,如果您在Linux上創建不區分大小寫的fs並將mysql數據存儲在那裏,那麼它可以工作 - 但這並不那麼簡單,儘管可能谷歌的幫助)。刪除了我的upvote。 – 2013-11-14 07:34:42

+0

在Windows上的模式2不*實際上以區分大小寫的方式比較名稱,你不能有ThisTable和thistable。 – simontemplar 2014-03-07 11:28:01

0

這個屬性添加到的lower_case_table_names = 2的my.ini

4

在Windows上投入的lower_case_table_names = 2,在文件 C的結尾:\ ProgramData \ MySQL的\ MySQL服務器5.7 \ my.ini的

+0

https://mariadb.com/kb/en/mariadb/identifier-case-sensitivity/ 注意:mysql和mariadb基本相同,所以這應該適用 '因此可以使基於Unix的系統的行爲像Windows並忽略區分大小寫,但反過來不對,因爲底層的Windows文件系統不能支持這一點。「 – 2016-07-01 22:26:10