无法重命名MySQL表

3

我想使用这段SQL重命名我的表。 我正在使用Windows XP上的MySQL 5.1.41。

USE 'bobby_tables';

    ALTER TABLE gc_acompte_fournisseur
      RENAME TO GC_Acompte_Fournisseur;

查询声称已正确执行,但是它是谎言!我的表名仍然全部为小写字母!

我遇到了什么邪恶的阻碍,不允许我将表名大写?


3
“哦,没错。我们叫他小博比·泰布尔。”(来源于xkcd.com/327漫画) - JasonWoof
2个回答

4

这就是MySQL在Windows上的工作方式:

http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_lower_case_table_names


  • lower_case_table_names

如果设置为0,则表名将按指定方式存储,比较区分大小写。如果设置为1,则表名将在磁盘上以小写形式存储,比较不区分大小写。如果设置为2,则表名按照给定的方式存储,但是比较时将转换为小写。此选项也适用于数据库名称和表别名。有关更多信息,请参见第8.2.2节,“标识符大小写敏感性”

如果您在运行具有不区分大小写文件名(如Windows或Mac OS X)的系统上的MySQL,则不应将此变量设置为0。如果您在这样的系统上将此变量设置为0并使用不同的大小写访问MyISAM表名,则可能会导致索引损坏。在Windows上,默认值为1。在Mac OS X上,默认值为2。

如果您正在使用InnoDB表,则应在所有平台上将此变量设置为1,以强制名称转换为小写

(我强调)


不,您应该将其保留为1,并不必关心表的大小写。这是处理此问题的最安全方式。 - Mchl
但是Linux服务器中的表格大小写混合,导致我的比较工具产生了大量误报,而且管理员不想在服务器上将它们改为小写 :( - Matt
我明白了。你可以尝试将其设置为2,但我不确定在这种情况下是否有帮助。 - Mchl

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接