阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL大小写敏感问题lower_case_table_names & lower_case_file_system

110次阅读
没有评论

共计 1048 个字符,预计需要花费 3 分钟才能阅读完成。

关于 MySQL 大小写敏感问题 lower_case_table_names & lower_case_file_system

〇 lower_case_file_system
    该参数是用于描述 data 目录所在的操作系统是否为大小写敏感,该参数为 bool 类型,但无法修改。
    0 — 大小写敏感 
    1 — 大小写不敏感

    比如跑在 linux 上的都是 OFF 或者 0。

〇 lower_case_table_names
    该参数为静态,可设置为 0、1、2。

0 — 大小写敏感。(Unix,Linux 默认)
创建的库表将原样保存在磁盘上。如 create database TeSt; 将会创建一个 TeSt 的目录,create table AbCCC … 将会原样生成 AbCCC.frm。
SQL 语句也会原样解析。

1 — 大小写不敏感。(Windows 默认)
创建的库表时,MySQL 将所有的库表名转换成小写存储在磁盘上。
SQL 语句同样会将库表名转换成小写。
如需要查询以前创建的 Test_table(生成 Test_table.frm 文件),即便执行 select * from Test_table,也会被转换成 select * from test_table,致使报错表不存在。

2 — 大小写不敏感(OS X 默认)
创建的库表将原样保存在磁盘上。
但 SQL 语句将库表名转换成小写。

修改 lower_case_table_names 导致的常见不良隐患:
如果在 lower_case_table_names= 0 时,创建了含有大写字母的库表,改为 lower_case_table_names= 1 后,则会无法被查到。

注意事项:
将默认的 lower_case_tables_name 为 0 设置成 1,需先将已经存在的库表名转换为小写

1)针对仅 表名 存在大写字母的情况:
①、lower_case_tables_name= 0 时,执行 rename table成小写
②、设置 lower_case_tables_name=1,重启生效。

2)针对 库名 存在大写字母的情况:
①、lower_case_tables_name= 0 时,使用 mysqldump 导出,并删除老的数据库。
②、设置 lower_case_tables_name=1,重启生效。
③、导入数据至实例,此时包含大写字母的 库名已转换为小写。

转换操作需要自行测试,不同操作系统,不同 MySQL版本可能有不同的情况。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2018-01/1506966.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计1048字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中