在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