lower_case_table_names参数

(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

猜你喜欢

转载自blog.csdn.net/weixin_41561862/article/details/109275308