手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

MySQL大小写敏感问题lower_case_table_names & lower_case_file_system

[日期:2018-01-31] 来源:Linux社区  作者:神谕丶 [字体: ]

关于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

linux
相关资讯       MySQL大小写  MySQL大小写问题 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款