我已经从Linux框创建了一个MySQL转储。当我看到转储文件表名称的内容被保留时,但是当我将同一个转储导入Windows框时,它正在丢失表名案例。
答案 0 :(得分:0)
您似乎应该在Windows上设置lower_case_table_names=2
(默认情况下为1)。在这种情况下,表和数据库名称使用CREATE TABLE或CREATE DATABASE语句中指定的字母大小存储在磁盘上,但MySQL在查找时将它们转换为小写。
有关详细信息,请参阅:http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html。
使用
lower_case_table_names=1 on all systems
。这样做的主要缺点是,当您使用SHOW TABLES或SHOW DATABASES时,您看不到原始字母组中的名称。使用
lower_case_table_names=0 on Unix
和lower_case_table_names=2 on Windows
。这样可以保留数据库和表名的字母大小写。这样做的缺点是您必须确保您的语句始终在Windows上使用正确的字母大小引用您的数据库和表名。如果将语句转移到Unix,那么lettercase很重要,如果lettercase不正确,它们就不起作用。异常:如果您正在使用InnoDB表,而您正试图避免这些数据传输问题,则应设置
lower_case_table_names to 1 on all platforms
以强制将名称转换为小写。