Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
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.
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 the
my.cnf
configuration file under [mysqld]).
Read the section:
10.2.2 Identifier Case Sensitivity
for more information.
–
–
–
–
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.
–
–
–
–
–
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
sudo /etc/init.d/mysql restart
Run mysqladmin -u root -p variables | grep table
to check that lower_case_table_names
is 1
now
You might need to recreate these tables to make it work.
–
–
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
"Notice: Undefined variable", "Notice: Undefined index", "Warning: Undefined array key", and "Notice: Undefined offset" using PHP
See more linked questions