【问题标题】:MySQL recommends lower case table names for InnoDBMySQL 建议 InnoDB 使用小写表名
【发布时间】:2018-07-26 04:39:00
【问题描述】:

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

【问题讨论】:

    标签: mysql windows innodb case-sensitive


    【解决方案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 ...;
    

    对于需要什么表可能会产生混淆。因此,该设置也适用于查询。

    【讨论】:

    • 这一点我很清楚。而且我也知道配置 Windows 区分大小写的可能性。我的问题是,为什么 MySQL 建议 不要为 InnoDB 引擎配置区分大小写
    • Windows 不区分大小写。那里别无选择。
    • 这根本不是真的。您甚至阅读过我的帖子或文档吗?
    猜你喜欢
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2011-12-09
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多