MySQL数据库中库、表名、字段的大小写问题

时间:2023-01-11 00:52:09

在使用MySQL建库的过程中发现了一个问题,无论怎么创建库,创建出来的库名都是小写的。然后上网查了一下资料。

在MySQL中,数据库和表都是对应目录下的一个或多个文件。因此,操作系统的大小写是否敏感决定了数据库大小写是否敏感。而在Windows中是对大小写不敏感的(Linux是对大小写敏感的)。

下图是在windows操作系统上MySQL中lower_case_table_system和lower_case_table_names的默认值。

MySQL数据库中库、表名、字段的大小写问题

下图是在Linux操作系统上MySQL中lower_case_table_system和lower_case_table_names的默认值。

MySQL数据库中库、表名、字段的大小写问题

         变量lower_case_file_system说明是否数据目录所在的文件系统对文件名的大小写敏感。ON说明文件名的大小写不敏感,OFF表示敏感。

lower_case_table_names参数说明

当值为0时

使用CREATE TABLE或CREATE DATABASE语句制定的大小写字母在硬盘上保存表名和数据库名。名称比较对大小写敏感。在大小写不敏感的操作系统如windows

或Max OS x上我们不能将参数设为0,如果再大小写不敏感的文件系统上将“lower_case_table_names”强制设置为0,并使用不同的大小写访问MyISAM表名,可能会导

致索引破坏。

当值为1时

表名在硬盘上以小写保存,名称比较对大小写不敏感。MySQL将所有表名转换为小写存储和查找表上。该行为也适合数据库名和表的别名,该值为Windows的默认值。

当值为2时

         表名和数据库名在硬盘上使用CREATETABLE或CREATE DATABASE语句指定的大小写字母进行保存,但MySQL将它们转换为小写在查找表上。名称比较对大小写不

敏感,即按照大小写来保存,按照小写来比较。注意:只在对大小写不敏感的文件系统上适用!innodb表名用小写保存。

那么现在问题来了,如何将Linux操作系统上有大小写的数据库还原到Windows操作系统上?

1、  将数据库数据通过mysqldump导出

2、  在my.cnf或my.ini中更改lower_case_tables_name=1,并重启Mysql服务。

3、  将导出的数据导入MySQL数据库中。


在MySql上为了避免大小写问题引来的不必要的麻烦,建议都将“lower_case_tables_name”设置值为1。我们可以用其他的方式来命名。