MySQL中的表名是否区分大小写?

时间:2011-05-26 05:17:18

标签: mysql case-sensitive mysql5

MySQL中的表名是否区分大小写?

在我的Windows开发机器上,我的代码能够查询看起来全是小写的表格。当我在数据中心部署到测试服务器时,表名似乎以大写字母开头。

我们使用的服务器都在Ubuntu上。

5 个答案:

答案 0 :(得分:165)

一般情况:

数据库和表名在Windows中不区分大小写,在大多数Unix中区分大小写。

  

在MySQL中,数据库对应于数据中的目录   目录。数据库中的每个表对应至少一个   数据库目录中的文件。因此,案例的敏感性   底层操作系统在案例敏感性中发挥作用   数据库和表名。

可以使用系统变量lower_case_table_names配置表名称在磁盘上的存储方式。 (在[mysqld]下的 my.cnf 配置中)

阅读以下部分:10.2.2 Identifier Case Sensitivity了解更多信息。

答案 1 :(得分:90)

数据库和表名在Windows中不区分大小写,在大多数Unix或Linux中都区分大小写。

解决问题,将lower_case_table_names设置为1

  

的lower_case_table_names = 1

这会使你的所有表都小写,无论你怎么写它们

答案 2 :(得分:19)

MySQL中的表名是文件系统条目,因此如果基础文件系统是,则它们不区分大小写。

答案 3 :(得分:12)

它取决于lower_case_table_names系统变量:

show variables where Variable_name='lower_case_table_names'

这有三个可能的值:

  • 0 - CREATE TABLECREATE DATABASE声明中指定的lettercase。名称比较区分大小写。
  • 1 - 表名以小写形式存储在磁盘上,名称比较不区分大小写。
  • 2 - CREATE TABLECREATE DATABASE语句中指定的lettercase,但MySQL在查找时将它们转换为小写。 名称比较不区分大小写。

Documentation

答案 4 :(得分:4)

  1. /etc/mysql/my.cnf

  2. 找到文件
  3. 通过添加以下行来编辑文件:

    [mysqld]

    lower_case_table_names=1

  4. sudo /etc/init.d/mysql restart

  5. 运行mysqladmin -u root -p variables | grep table检查lower_case_table_names现在是1

  6. 您可能需要重新创建这些表才能使其正常工作