标签:windows 数据库 操作系统 mysql linux
今天研发人员问我,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之前,必须先将旧的数据库名和表名转换为小写。
标签:windows 数据库 操作系统 mysql linux
原文地址:http://jackyxin.blog.51cto.com/1976631/1661131