我正在研究Windows中的MySQL數據庫。如何強制區分大小寫的表名稱?
我必須將它移到Linux環境中。 MySQL數據庫包含很多表格和存儲過程,它們都是CASE SENSITIVE。
當我備份我的數據庫時,所有表名都被強制爲小寫,所以當我在Linux中恢復它時,它會抱怨,因爲你無法制作重複的表和存儲過程。
我無法訪問linux環境中的MySQL配置,所以我不能將MySQL設置更改爲不區分大小寫模式。
有沒有辦法強制MySQL(v5.x)在Windows中使用區分大小寫的表名?
我正在研究Windows中的MySQL數據庫。如何強制區分大小寫的表名稱?
我必須將它移到Linux環境中。 MySQL數據庫包含很多表格和存儲過程,它們都是CASE SENSITIVE。
當我備份我的數據庫時,所有表名都被強制爲小寫,所以當我在Linux中恢復它時,它會抱怨,因爲你無法制作重複的表和存儲過程。
我無法訪問linux環境中的MySQL配置,所以我不能將MySQL設置更改爲不區分大小寫模式。
有沒有辦法強制MySQL(v5.x)在Windows中使用區分大小寫的表名?
看一看這篇文章 - http://dev.mysql.com/doc/refman/5.1/en/identifier-case-sensitivity.html
模式2允許存儲與指定的大小寫表,但無論如何,名字比較不會是大小寫敏感的,你不會是能夠存儲table1
和Table1
在同一時間。
不幸的是,在windows上使MySQL不能像在Linux中一樣運行100%。你可以做的是在Virtual Box或VMware player與TurnKey - MySQL Appliance上運行一個最小的虛擬機。
以我個人的經驗,我發現使用類似於部署環境的配置來診斷問題的VM非常有用。
閱讀全部這樣的:http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html
然後這個系統變量添加到的my.ini
底部和重啓MySQL:
/my.ini:的lower_case_table_names = 2
這對我有效!現在,如果只有模式名稱也是區分大小寫的...... – 2012-07-21 20:42:46
請注意,只適用於不區分大小寫的文件系統,例如Mac和Windows,但不是Linux,因爲Linux的默認fs是區分大小寫的(但是,如果您在Linux上創建不區分大小寫的fs並將mysql數據存儲在那裏,那麼它可以工作 - 但這並不那麼簡單,儘管可能谷歌的幫助)。刪除了我的upvote。 – 2013-11-14 07:34:42
在Windows上的模式2不*實際上以區分大小寫的方式比較名稱,你不能有ThisTable和thistable。 – simontemplar 2014-03-07 11:28:01
我添加這並解決了不同的案例問題
lower_case_table_names = 1
在的/etc/my.cnf
你可以看到如何設置MySQL的變量 「的lower_case_table_names」 構成本頁面: https://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_lower_case_table_names
這個屬性添加到的lower_case_table_names = 2到的my.ini
在Windows上投入的lower_case_table_names = 2,在文件 C的結尾:\ ProgramData \ MySQL的\ MySQL服務器5.7 \ my.ini的
https://mariadb.com/kb/en/mariadb/identifier-case-sensitivity/ 注意:mysql和mariadb基本相同,所以這應該適用 '因此可以使基於Unix的系統的行爲像Windows並忽略區分大小寫,但反過來不對,因爲底層的Windows文件系統不能支持這一點。「 – 2016-07-01 22:26:10
令人驚訝的是,從MySQL 5.1升級到MySQL 5.5解決了我的問題!現在我可以在Windows環境中使用區分大小寫的表名,儘管仍然不可能創建兩個名稱相同的表,但字母大小不同(即table_1和TABLE_1),當然我從不想這樣做! – 2011-07-10 18:34:00