在Unix上,lower_case_table_names
的默認值爲0.在Windows上,默認值爲1.在Mac OS X上,MySQL 4.0.18之前的默認值爲1,4.0.18的默認值爲2。
要解決此問題,您可以在您的my.ini文件中找到設置:lower_case_table_names,位於或位於:C:\ Program Files \ MySQL \ MySQL Server 4.1中,具體取決於您正在運行的版本。如果你沒有找到設置,你可以將它添加到my.ini文件的結尾,像我一樣,像這樣:
lower_case_table_names=0
記住你測試是否之前重新啓動MySQL服務有用。
如果您僅在一個平臺上使用MySQL,則通常不必將lower_case_table_names變量從其默認值更改。但是,如果要在文件系統區分大小寫不同的平臺之間傳輸表,可能會遇到困難。例如,在Unix上,可以有兩個名爲my_table和MY_TABLE的表,但在Windows上,這些名稱被認爲是相同的。爲了避免數據庫或表名稱發生數據傳輸問題,您有兩種選擇:
在所有系統上使用lower_case_table_names = 1。這樣做的主要缺點是,當您使用SHOW TABLES或SHOW DATABASES時,您看不到原始信箱中的名稱。
在Unix上使用lower_case_table_names = 0,在Windows上使用lower_case_table_names = 2。這保留了數據庫和表名的字母大小寫。這樣做的缺點是,您必須確保您的語句始終在Windows上使用正確的lettercase引用數據庫和表名。如果你將你的語句轉移到Unix中,那麼lettercase是有意義的,如果這個casecase是不正確的,它們就不起作用。
例外情況:如果您正在使用InnoDB表,並且您試圖避免這些數據傳輸問題,則應在所有平臺上將lower_case_table_names設置爲1以強制名稱轉換爲小寫。
如果您打算在Unix上將lower_case_table_names系統變量設置爲1,則必須先將舊數據庫和表名稱轉換爲小寫,然後再停止mysqld並使用新變量設置重新啓動它。
請查看MySQL的網站有關此的其他信息,以及一些重要的警告http://dev.mysql.com/doc/refman/4.1/en/identifier-case-sensitivity.html
這是一個有趣的問題。導致類似於Windows中的SQL工作而不是基於Unix的系統出現問題。 AFAIK,沒有解決辦法。 – Nishant 2012-02-25 09:34:55