Are table names in MySQL case sensitive?

╄→尐↘猪︶ㄣ 提交于 2019-11-25 22:49:46

问题


Are table names in MySQL case sensitive?

On my Windows dev 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.


回答1:


In General:

Database and table names are not case sensitive in Windows, and case sensitive in most varieties of Unix.

In MySQL, databases correspond to directories within the data directory. Each table within a database corresponds to at least one file within the database directory. Consequently, the case sensitivity of the underlying operating system plays a part in the case sensitivity of database and table names.

One can configure how tables names are stored on the disk using the system variable lower_case_table_names. (in my.cnf configuration under [mysqld])

Read the section: 10.2.2 Identifier Case Sensitivity for more information.




回答2:


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

lower_case_table_names=1

this will make all your tables lowercase, no matter how you write them




回答3:


Table names in MySQL are file system entries, so they are case insensitive if the underlying file system is.




回答4:


It depends upon lower_case_table_names system variable:

show variables where Variable_name='lower_case_table_names'

There are three possible values for this:

  • 0 - lettercase specified in the CREATE TABLE or CREATE 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 the CREATE TABLE or CREATE DATABASE statement, but MySQL converts them to lowercase on lookup. Name comparisons are not case sensitive.

Documentation




回答5:


  1. Locate file at /etc/mysql/my.cnf

  2. Edit the file by adding the following lines:

    [mysqld]

    lower_case_table_names=1

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

  4. run mysqladmin -u root -p variables | grep table to check that lower_case_table_names is 1 now

You might need to re-create these tables to make it work



来源:https://stackoverflow.com/questions/6134006/are-table-names-in-mysql-case-sensitive

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!