MySQL中的表名是否区分大小写?
在我的Windows开发机器上,我的代码能够查询看起来全部小写的表格 . 当我部署到数据中心的测试服务器时,表名称似乎以大写字母开头 .
我们使用的服务器都在Ubuntu上 .
一般来说:
Database and table names are not case sensitive in Windows, and case sensitive in most varieties of Unix.
在MySQL中,数据库对应于数据目录中的目录 . 数据库中的每个表对应于数据库目录中的至少一个文件 . 因此,底层操作系统的区分大小写在数据库和表名称的区分大小写中起作用 .
可以使用系统变量 lower_case_table_names 配置表名称在磁盘上的存储方式 . (在[mysqld]下的 my.cnf 配置中)
lower_case_table_names
阅读部分:10.2.2 Identifier Case Sensitivity了解更多信息 .
数据库和表名在Windows中不区分大小写,在大多数Unix或Linux中都区分大小写 .
要解决此问题,请将lower_case_table_names设置为1
lower_case_table_names = 1
无论你如何写它们,这都会使你的所有表都小写
MySQL中的表名是文件系统条目,因此如果是基础文件系统,它们不区分大小写 .
它取决于 lower_case_table_names 系统变量:
show variables where Variable_name='lower_case_table_names'
这有三个可能的值:
0 - CREATE TABLE 或 CREATE DATABASE 语句中指定的lettercase . 名称比较区分大小写 .
CREATE TABLE
CREATE DATABASE
1 - 表名以小写形式存储在磁盘上,名称比较不区分大小写 .
2 - CREATE TABLE 或 CREATE DATABASE 语句中指定的lettercase,但MySQL在查找时将它们转换为小写 . 名称比较不区分大小写 .
Documentation
在 /etc/mysql/my.cnf 找到文件
/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
mysqladmin -u root -p variables | grep table
1
You might need to re-create these tables to make it work
5 回答
一般来说:
Database and table names are not case sensitive in Windows, and case sensitive in most varieties of Unix.
可以使用系统变量
lower_case_table_names
配置表名称在磁盘上的存储方式 . (在[mysqld]下的 my.cnf 配置中)阅读部分:10.2.2 Identifier Case Sensitivity了解更多信息 .
数据库和表名在Windows中不区分大小写,在大多数Unix或Linux中都区分大小写 .
要解决此问题,请将lower_case_table_names设置为1
无论你如何写它们,这都会使你的所有表都小写
MySQL中的表名是文件系统条目,因此如果是基础文件系统,它们不区分大小写 .
它取决于
lower_case_table_names
系统变量:这有三个可能的值:
0 -
CREATE TABLE
或CREATE DATABASE
语句中指定的lettercase . 名称比较区分大小写 .1 - 表名以小写形式存储在磁盘上,名称比较不区分大小写 .
2 -
CREATE TABLE
或CREATE DATABASE
语句中指定的lettercase,但MySQL在查找时将它们转换为小写 . 名称比较不区分大小写 .Documentation
在
/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
You might need to re-create these tables to make it work