[Mysql] mysql大小写敏感参数


本文总阅读量

1、lower_case_file_system

value=ON|OFF

1
该参数代表mysql数据目录所在的文件系统下的文件名的大小写是否敏感,off代表大小写铭感,on代表大小写不敏感。该变量是个只读参数,只代表一个文件系统属性,进行设置对文件系统没有任何影响。

2、lower_case_table_names

value=0|1|2
不同值代表的含义:

1
2
3
默认值为0,如果设置为0,表名是被指定存储的并且会进行大小写敏感的比较。
如果设置为1,表名存为小写,不进行大小写敏感的比较。
如果设置为2,表名按指定的存储,但是按小写的方式比较。这个参数同时适用于库名和表别名。

不同操作系统的默认值:

1
2
3
如果是windows,值默认为1。
如果是macos,值默认是2。
如果是linux默认是0,且不支持设置为2,如果这是为2,服务端会强制用0替代。

使用过程要注意的问题:

1
2
3
4
5
1)如果MySQL服务运行在操作系统(windows或者macos)上,mysql的数据目录所在的文件系统是大小写不敏感的,因此不能设置lower_case_table_names为0。这种组合是不被支持的,当执行INSERT INTO...SELECT...FROM tbl_name操作时,因为tb1_name的小写,会导致系统hang主。
2)在myisam表中,使用不同的字母大小写访问表,会引起索引损坏。
3)如果在一个大小写不明感的文件系统上设置lower_case_table_names=0,会打印error信息并退出服务。
4)如果使用innodb引擎表,不管什么平台,都需要设置该参数为1,强制将名称转换为小写。
5)数据库禁止启动的时候使用的lower_case_table_names的值与数据库初始化时的值不一致。这个限制是因为,当数据库初始化时候,数据字典表字段的排序是基于当时的值定义的。如果重启以不同的lower_case_table_names值启动,会导致在标识符的排序和比较引起不一致性。
目录
  1. 1. 1、lower_case_file_system
  2. 2. 2、lower_case_table_names

Proudly powered by Hexo and Theme by Lap
本站访客数人次
© 2020 zeven0707's blog