记一次MySQL小坑-表名区分大小写-有表提示表不存在

        突然感觉自己对MySQL一无所知,就像最近在写的一个Demo,特意去使用了MySQL数据库,本地测试正常后发布到Linux服务器上,表都是创好了的,但是提交登录的时候提示表不存在(Table 'sms.USER' doesn't exist),如下图:
b.jpg
这边使用数据库连接工具查看了一下,发现表是存在的,于是抱着试试的态度,把页面中报错的表名完整的复制进行查询,竟然也显示表不存在,如下图:
c.jpg
    也可能是因为大写字母太过于显眼,突然发现表名显示是小写字母,而查询的是大写,于是再次尝试,将查询语句更改为小写,居然成功了!
这下明白过来了,后来又去查了相关资料,发现MySQL在Windows上默认是不区分表明大小写的,但是Linux不同,一直用Oracle的我感觉MySQL巨坑,知道原因后我们说说如何解决:
     第一:
        就是我们语句与表名大小写一致(开玩笑_肯定不能这样干)
     第二:
          更改MySQL配置文件,输入以下代码-编辑my.cnf文件(按i进入到可编辑模式):
vim  /etc/my.cnf
在[mysqld]选项中添加下面这行代码:
lower_case_table_names=1
效果如下图:
d.jpg
    修改完之后按Esc键退出编辑,输入:wq进行保存,这时我们重启MySQL服务再测试一下,会发现不管是大写还是小写都能正确查询。
这里对这个参数再说明一下:
  1. 设置为0-即表名按照我们写的SQL语句大小写进行存储,查找表时大小写敏感。
  2. 设置为1-即表名统一按照小写存储到硬盘上,查找表时大小写不敏感。
  3. 设置为2-即表名按我们写的SQL语句大小写进行存储,但是查找表时统一转小写比较。
那么关于MySQL表名大小写的问题到这里也就解决了,如果有其他疑问欢迎留言哦。
作者:徐先森 文章名: 《记一次MySQL小坑-表名区分大小写-有表提示表不存在》
收录情况: 百度已收录
版权说明:若无特别注明,本文皆为 "徐博客”原创,转载请保留出处!

相关推荐

网友评论(已关闭)