【发布时间】:2011-09-02 07:17:18
【问题描述】:
MySQL 中的表名是否区分大小写?
在我的 Windows 开发机器上,我拥有的代码能够查询我的表,这些表似乎都是小写的。当我部署到我们数据中心的测试服务器时,表名似乎以大写字母开头。
我们使用的服务器都在 Ubuntu 上。
【问题讨论】:
标签: mysql case-sensitive mysql5
MySQL 中的表名是否区分大小写?
在我的 Windows 开发机器上,我拥有的代码能够查询我的表,这些表似乎都是小写的。当我部署到我们数据中心的测试服务器时,表名似乎以大写字母开头。
我们使用的服务器都在 Ubuntu 上。
【问题讨论】:
标签: mysql case-sensitive mysql5
MySQL 中的表名是文件系统条目,因此如果底层文件系统是,则它们不区分大小写。
【讨论】:
一般:
数据库和表名在 Windows 中不区分大小写,在大多数 Unix 中区分大小写。
在 MySQL 中,数据库对应于数据中的目录 目录。数据库中的每个表至少对应一个 数据库目录中的文件。因此,区分大小写 底层操作系统在区分大小写方面发挥了作用 数据库和表名。
可以使用系统变量lower_case_table_names(在[mysqld]下的my.cnf配置文件中)配置表名在磁盘上的存储方式。
阅读该部分:10.2.2 Identifier Case Sensitivity 了解更多信息。
【讨论】:
数据库和表名在 Windows 中不区分大小写,在大多数 Unix 或 Linux 中区分大小写。
要解决此问题,请将 lower_case_table_names 设置为 1
lower_case_table_names=1
这将使您的所有表格小写,无论您如何编写它们。
【讨论】:
这取决于lower_case_table_names系统变量:
show variables where Variable_name='lower_case_table_names'
这有三个可能的值:
0 - 在CREATE TABLE 或CREATE DATABASE 语句中指定的字母大小写。名称比较区分大小写。 1 - 表名以小写形式存储在磁盘上,并且名称比较不区分大小写。 2 - 在 CREATE TABLE 或 CREATE DATABASE 语句中指定的字母大小写,但 MySQL 在查找时将它们转换为小写。
名称比较不区分大小写。【讨论】:
在/etc/mysql/my.cnf找到文件
通过添加以下行来编辑文件:
[mysqld]
lower_case_table_names=1
sudo /etc/init.d/mysql restart
现在运行 mysqladmin -u root -p variables | grep table 以检查 lower_case_table_names 是否为 1
您可能需要重新创建这些表才能使其正常工作。
【讨论】:
Different lower_case_table_names settings for server ('1') and data dictionary ('0').,请重新创建数据库/表。