(1)lower_case_table_names参数的取值
lower_case_table_names默认值为 0,Windows下默认值是 1 .Mac OS X下默认值是 2 。
0:使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母在硬盘上保存表名和数据库名。名称比较对大小写敏感。
在大小写不敏感的操作系统如windows或Mac OS上我们不能将该参数设为0,如果在大小写不敏感的文件系统上将lowercase-table-names强制设为0,并且使用不同的大小写访问MyISAM表名,可能会导致索引破坏。
1:表名在硬盘上以小写保存,名称比较对大小写不敏感。
2:表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母进行保存,但查找的时候MySQL将它们转换为小写。名称比较对大小写不敏感,即按照大小写来保存,按照小写来比较。注释:只在对大小写不敏感的文件系统上适用!。
(2)由大小写敏感转换为不敏感方法
如果原来所建立库及表都是对大小写敏感的,想要转换为对大小写不敏感,主要需要进行如下3步:
1.将数据库数据通过mysqldump导出。
2.在my.cnf中更改lower_case_tables_name = 1,并重启mysql数据库。
3.将导出的数据导入mysql数据库。
请注意在Unix中如果以前lower_case_tables_name = 0将lower_case_tables_name设置为1之前,重启mysqld之前,必须先将旧的数据库名和表名转换为小写。否则原来是大写的表名,在查询的时候会提示表不存在。
如下案例中的表ORACLE_TEST是在lower_case_table_names=0时创建的,将参数lower_case_table_names修改为1后,重启数据库再次查看ORACLE_TEST表,提示该表不存在。
(root:> show tables;
+----------------------+
| Tables_in_kafka_test |
+----------------------+
| AI |
| ORACLE_TEST |
| ai |
| t |
| t1 |
| t2 |
| test |
| test1 |
| test2 |
| test_ddl |
| test_view |
| test_view2 |
| tx_template_info |
| vc |
+----------------------+
14 rows in set (0.00 sec)
(root:> select * from ai;
Empty set (0.02 sec)
(root:]> select * from AI;
Empty set (0.00 sec)
(root:> select * from oracle_test;
ERROR 1146 (42S02): Table 'oracle_test' doesn't exist
(root:> select * from ORACLE_TEST;
ERROR 1146 (42S02): Table 'oracle_test' doesn't exist