Case Insensitive Table And Column Names In MySQL

While you should always uphold the case-sensitive tablenames, it can be troublesome when migrating from a host that had this option enabled (table & column names become case insensitive), to a host that doesn’t have this option – so you suddenly find yourself “stuck” with case sensitive table and column names. For instance when migrating from a Windows environment, to a Linux environment.

Table ‘database.TableName’ doesn’t exist (because the table “tablename” exists, without capitals)

To solve this, edit your /etc/my.cnf file and add the following line under the [mysqld] section:

[mysqld]
lower_case_table_names=1

(The older set-variable = lower_case_table_names=1 syntax was removed in MySQL 5.5, so use the plain assignment above. And note: on MySQL 8.0 and later this can only be set when the server is initialized – you can’t flip it on an existing data directory anymore.)

Restart your MySQLd.

service mysqld restart
or
/etc/init.d/mysqld restart

There are some serious consequences to this change, which are best explained on this page; the MySQL manual on identifier case sensitivity . And if you’re thinking of using this in combination with Plesk’s Control Panel; don’t. You’ll break Plesk’s functionality, and receive continuous notices that the server’s SMTP server is down, even though it’s not. This is because Plesk performs its checks using a case sensitive database, and those checks fail once you revert to a case insensitive system.