In mysql I want to set lower_case_table_names=1 on existing databases to avoid cases-sensitivity issues accross multiple platforms.

A) What are the risks ?( besides show table issue)

B) After setting lower_case_table_names=1, will I be in position to query databases across multiple platforms consistantly ? select * from USERS == select * from users;

C) How the triggers + stored procedure + functions + views + events will be affected in this regards. I know lower_case_table_names is only for "TABLE"
names but how about triggers other database objects . Will they remain case-insensitive How about views ?

D) Do I need to rename all tables before/after this configuration setting or this will do the miracle in one step (i.e lower_case_table_names=1 neutralize table names) ?

E) What will be the exact steps WRT:mysqd / my.ini ?

  • I strongly suggest leaving lower_case_table_names alone. The default setting gives the least problems, as it is design to work OK on both Windows and Linux.
    – Johan
    Sep 7, 2011 at 15:01

1 Answer 1


Our servers were Mysql on Windows and we had to change them to Linux. On the new servers we set lower_case_table_names=1 in my.cnf and then copied the schemas with mysqldump old-server | mysql new-server (I don't remember if we copied the mysql and information_schema schemas too, or only the ones with our data, you should try both ways).

Everything is working the same as it was before. Apart from tables we use views, stored procedures and stored functions (but not triggers)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.