首页 文章

MySQL推荐InnoDB的小写表名

提问于
浏览
1

MySQL文档[1]解释了在所有平台上使用区分大小写的表名的可能性(通过在Unix上设置 lower_case_table_names=0 和在Windows上设置 lower_case_table_names=2 ),但有一个例外:

例外:如果您正在使用InnoDB表而您正试图避免这些数据传输问题,则应在所有平台上将lower_case_table_names设置为1以强制将名称转换为小写 .

我的问题是:

  • 为什么建议为InnoDB使用小写表名?

  • 如果将InnoDB表设置为区分大小写,会发生什么?

[1] https://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.html

1 回答

  • 1
    CREATE TABLE abc (...); -- creates file `abc.frm`
    CREATE TABLE ABC (...); -- creates file `ABC.frm`
    

    如果操作系统(如Windows)无法区分 abc.frmABC.frm ,则这两个表不能共存 . 同样对于数据库 .

    此外,如果你马虎虎虎,并说两者

    SELECT ... FROM abc ...;
    SELECT ... FROM Abc ...;
    

    关于什么表是期望的,可能会有混淆 . 因此,该设置也适用于查询中的使用 .

相关问题