mysql对大小写的限制问题

    今天研发人员问我,mysql对大小写有限制吗?我想都没想,说没限制。过了一会儿,研发人员告诉我说Linux下是有限制的。我顿时有种打自己脸的感觉。对于自己不确定的问题,一定得想清楚,查明白了再说。

    在Windows和Mac OS中,lower_case_tables_name的默认值是1.

如果只是在一个平台上使用mysql,通常是不需要更改lower_case_tables_name变量。但是如果在对大小写敏感不同的操作系统上导入数据库,就会遇到问题。在Linux上,test_table和TEST_TABLE是两个不同的表。在Windows中,这两个表明相同。

在数据转移时避免由于数据库名和表名的大小写造成的数据转移问题,可使用两个选项:

    (1)在任何系统中可以使用lower_case_tables_name=1。使用该选项的不利之处是当使用SHOW TABLES或SHOW DATABASES时,看不出名字原来是用大写还是小写

    (2)在Linux中使用lower_case_tables_name=0,在Windows中使用lower_case_tables_name=2。这样了可以保留数据库名和表名的大小写。不利之处是必须确保在Windows中查询总是用正确大小写引用数据库名和表名。如果将查询转移到Linux中,由于在Linux中大小写很重要,如果大小写不正确,它们不工作。

     例外:如果你正使用InnoDB表,在任何平台上均应将lower_case_tables_name设置为1,以强制将名转换为小写。请注意在Linux中将lower_case_tables_name设置为1之前,重启mysqld之前,必须先将旧的数据库名和表名转换为小写。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。