数据库和表名在 Windows 中是大小写不敏感的 ,而在大多数类型的 Unix 系统中是大小写敏感的
Windows 版的 MySQL 默认继承 os 的大小写习惯,即使 SQL中有区分,在导入的时候都会被转为小写,如果今后再将此数据库导出就可能存在大小写的问题。my.ini 中有属性lower_case_table_names 可以更改此默认值,要严格区分大小写,将此项的置设置为2,再重启 MySQL 服务即可。
参考:
[mysqld]
lower_case_table_names=2
Windows 版的 MySQL 默认继承 os 的大小写习惯,即使 SQL中有区分,在导入的时候都会被转为小写,如果今后再将此数据库导出就可能存在大小写的问题。my.ini 中有属性lower_case_table_names 可以更改此默认值,要严格区分大小写,将此项的置设置为2,再重启 MySQL 服务即可。
参考:
[mysqld]
lower_case_table_names=2
如果没有,可以在MySQL的配置文件中my.ini [mysqld] 中增加一行
lower_case_table_names = 2
注意:my.ini 不在C:Program FilesMySQLMySQL Server 5.5下,而是在:C:ProgramDataMySQLMySQL Server 5.5my.ini
然而,该查询在Windows中是可以的。要想避免出现差别,最好采用一致的转换,例如总是用小写创建并引用数据库名和表名。在大多数移植和使用中建议使用该转换。
在MySQL中如何在硬盘上保存和使用表名和数据库名由lower_case_tables_name系统变量确定,可以在启动mysqld 时设置。lower_case_tables_name可以采用下面的任一值:
值 |
含义 |
0 |
使用CREATE TABLE或CREATE DATABASE语句指定的大写和小写在硬盘上保存表名和数据库名。名称比较对大小写敏感。在Unix系统中的默认设置即如此。请注意如果在大小写不敏感的文件系统上用--lower-case-table-names=0强制设为0,并且使用不同的大小写访问MyISAM表名,会导致索引破坏。 |
1 |
表名在硬盘上以小写保存,名称比较对大小写敏感。MySQL将所有表名转换为小写以便存储和查找。该行为也适合数据库名和表的别名。该值为Windows和Mac OS X系统中的默认值。 |
2 |
表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写进行保存,但MySQL将它们转换为小写以便查找。名称比较对大小写敏感。注释: 只 在对大小写不敏感的文件系统上适用! InnoDB表名以小写保存,例如lower_case_tables_name=1。 |