MySQL case sensitivity table name on MacOS with case insensitive file system

前端 未结 7 986
梦如初夏
梦如初夏 2021-01-19 11:55

I have researched a lot and what I understand to make database tables name sensitive, you have to set the variable lower_case_table_names=0. Im on osX. I did this change in

7条回答
  •  南方客
    南方客 (楼主)
    2021-01-19 12:42

    Tables and Columns are Case Sensitive in Linux! To make them case insensitive, follow this:

    Open terminal and edit /etc/mysql/my.cnf

    sudo nano /etc/mysql/my.cnf
    

    Underneath the [mysqld] section, add:

    lower_case_table_names = 1
    

    Restart mysql

    sudo /etc/init.d/mysql restart
    

    Then check it here:

    mysqladmin -u root -p variables
    

    Just altering the lower_case_table_names setting isn't enough. It needs to be done before you import your database(s).

    The MySQL 5.7 documentation lists a procedure for moving between Windows and Linux/UNIX. A note about Mac OSX from that reference:

    One notable exception is OS X, which is Unix-based but uses a default file system type (HFS+) that is not case sensitive. However, OS X also supports UFS volumes, which are case sensitive just as on any Unix.

    Review the manual page to ensure that your desired rules for enforcing case sensitivity are followed. Take a look and verify that you did these steps in the correct order:

    To convert one or more entire databases, dump them before setting lower_case_table_names, then drop the databases, and reload them after setting lower_case_table_names:

    1 - Use mysqldump to dump each database:

    mysqldump --databases db1 > db1.sql

    mysqldump --databases db2 > db2.sql

    ... Do this for each database that must be recreated.

    2 - Use DROP DATABASE to drop each database.

    3 - Stop the server, set lower_case_table_names in the [mysqld] section of your \etc\mysql\my.cnf file, and restart the server.

    4 - Reload the dump file for each database. Because lower_case_table_names is set, each database and table name will be converted to lowercase as it is recreated:

    mysql < db1.sql

    mysql < db2.sql

    Concerning the MySQL System Variable lower_case_table_names Server Variable (or setting):

    Additional References:

    • MySQL case sensitive table names on Linux
    • How to make MySQL table name case insensitive in Ubuntu?

提交回复
热议问题