MySQL中的表名区分大小写吗?
MySQL中的表名区分大小写吗?
在我的 Windows 开发机器上,我拥有的代码能够查询我的表,这些表似乎都是小写的。当我部署到数据中心的测试服务器时,表名称似乎以大写字母开头。
我们使用的服务器都在Ubuntu上。
Are table names in MySQL case sensitive?
On my Windows development machine the code I have is able to query my tables which appear to be all lowercase. When I deploy to the test server in our datacenter the table names appear to start with an uppercase letter.
The servers we use are all on Ubuntu.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
在
/etc/mysql/my.cnf
中找到该文件通过添加以下行来编辑该文件:
<前><代码> [mysqld]
小写表名=1
sudo /etc/init.d/mysql restart
运行
mysqladmin -u root -p 变量| grep table
检查lower_case_table_names
现在是否为1
您可能需要重新创建这些表才能使其正常工作。
Locate the file at
/etc/mysql/my.cnf
Edit the file by adding the following lines:
sudo /etc/init.d/mysql restart
Run
mysqladmin -u root -p variables | grep table
to check thatlower_case_table_names
is1
nowYou might need to recreate these tables to make it work.
请参阅此[文档][1]
在 Unix 上使用 lower_case_table_names=0,在 Windows 上使用 lower_case_table_names=2。
[1]:https://dev.mysql。 com/doc/refman/8.0/en/identifier-case-sensitivity.html
C:\Program Files\MySQL\MySQL Server XX\my.ini ->编辑
之后添加以下行
在 [mysqld] lower_case_table_names = 2
Refer This [Doc][1]
Use lower_case_table_names=0 on Unix and lower_case_table_names=2 on Windows.
[1]: https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html
C:\Program Files\MySQL\MySQL Server X.X\my.ini -> Edit
Add the below line after [mysqld]
lower_case_table_names = 2
在 MySQL 中,表名的大小写敏感度取决于操作系统和 lower_case_table_names 系统变量:
Windows:MySQL 默认情况下表名不区分大小写,因此 table_name 和 Table_Name 被视为相同。
Linux(包括Ubuntu):MySQL默认区分表名大小写,因此table_name和Table_Name被认为是不同的。
解决方案
在 Ubuntu 上更改 lower_case_table_names
lower_case_table_names=1
sudo服务mysql重启
In MySQL, the case sensitivity of table names depends on the operating system and the lower_case_table_names system variable:
Windows: MySQL is case-insensitive with table names by default, so table_name and Table_Name are treated the same.
Linux (including Ubuntu): MySQL is case-sensitive with table names by default, so table_name and Table_Name are considered different.
Solotion for this
To change lower_case_table_names on Ubuntu
lower_case_table_names=1
sudo service mysql restart
一般来说:
数据库和表名称在 Windows 中不区分大小写,而在大多数 Unix 版本中区分大小写。
人们可以使用系统变量
lower_case_table_names
(在[mysqld]下的my.cnf配置文件中)配置表名称在磁盘上的存储方式。阅读以下部分:10.2.2 标识符区分大小写 了解更多信息。
In general:
Database and table names are not case sensitive in Windows, and case sensitive in most varieties of Unix.
One can configure how tables names are stored on the disk using the system variable
lower_case_table_names
(in the my.cnf configuration file under [mysqld]).Read the section: 10.2.2 Identifier Case Sensitivity for more information.
数据库和表名称在 Windows 中不区分大小写,而在大多数 Unix 或 Linux 版本中区分大小写。
要解决此问题,请将 lower_case_table_names 设置为 1
这将使所有表都小写,无论您如何编写它们。
Database and table names are not case sensitive in Windows, and case sensitive in most varieties of Unix or Linux.
To resolve the issue, set the lower_case_table_names to 1
This will make all your tables lowercase, no matter how you write them.
它取决于
lower_case_table_names
系统变量:有三个可能的值:
0
- 在 < 中指定的字母大小写code>CREATE TABLE 或CREATE DATABASE
语句。名称比较区分大小写。1
- 表名称以小写形式存储在磁盘上,名称比较不区分大小写。2
- 在CREATE TABLE
或CREATE DATABASE
语句中指定的字母大小写,但MySQL在查找时将它们转换为小写。名称比较不区分大小写。
文档
It depends upon
lower_case_table_names
system variable:There are three possible values for this:
0
- lettercase specified in theCREATE TABLE
orCREATE DATABASE
statement. Name comparisons are case sensitive.1
- Table names are stored in lowercase on disk and name comparisons are not case sensitive.2
- lettercase specified in theCREATE TABLE
orCREATE DATABASE
statement, but MySQL converts them to lowercase on lookup.Name comparisons are not case sensitive.
Documentation
MySQL 中的表名是文件系统条目,因此如果底层文件系统是大小写,那么它们是不区分大小写的。
Table names in MySQL are file system entries, so they are case insensitive if the underlying file system is.