MySQL中的表名是否区分大小写?
在我的Windows开发机器上,我拥有的代码能够查询我的表,这些表似乎都是小写的。当我部署到数据中心的测试服务器时,表名似乎以大写字母开头。
我们使用的服务器都在Ubuntu上。
MySQL中的表名是否区分大小写?
在我的Windows开发机器上,我拥有的代码能够查询我的表,这些表似乎都是小写的。当我部署到数据中心的测试服务器时,表名似乎以大写字母开头。
我们使用的服务器都在Ubuntu上。
当前回答
数据库和表名在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语句中指定的字母。名称比较区分大小写。 表名在磁盘上以小写形式存储,名称比较不区分大小写。 2 -在CREATE TABLE或CREATE DATABASE语句中指定的字母,但MySQL在查找时将它们转换为小写。 名称比较不区分大小写。
文档
MySQL中的表名是文件系统条目,因此如果底层文件系统是,那么它们是不区分大小写的。
一般来说:
数据库和表名在Windows中不区分大小写,而在大多数Unix中是区分大小写的。
在MySQL中,数据库对应于数据中的目录 目录中。数据库中的每个表至少对应一个表 数据库目录中的文件。的大小写敏感性 的大小写敏感性与底层操作系统有关 数据库和表名。
可以使用系统变量lower_case_table_names(在[mysqld]下的my.cnf配置文件中)配置表名如何存储在磁盘上。
更多信息请阅读:10.2.2标识符大小写敏感性。
数据库和表名在Windows中不区分大小写,而在大多数Unix或Linux中是区分大小写的。
要解决这个问题,将lower_case_table_names设置为1
lower_case_table_names = 1
这将使所有的表都小写,无论您如何编写它们。
将文件定位到/etc/mysql/my.cnf 通过添加以下行编辑文件: (mysqld) lower_case_table_names = 1 sudo /etc/init.d / mysql重启 执行mysqladmin -u root -p variables | grep table检查lower_case_table_names现在为1
您可能需要重新创建这些表以使其正常工作。