问题描述
我使用navicat远程连接centos7主机创建数据库,设置但是应用系统跑的时候sql对表名大小写敏感,例如sys_log表,使用sys_Log就会找不到表,不知道怎么回事,我一直以为设置utf8_general_ci就可以做到表名不敏感,其实不是的,这是我的一个误区,记录一下,尴尬。。。。,为什么我会这样认为,因为本地的mysql我从来没有做过别的设置,但是我写的应用却没有报这个错,依然能够正确的访问表,一脸蒙比
简记
ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的;bin 是二进制, a 和 A 会别区别对待.例如你运行:SELECT * FROM table WHERE txt = 'a'那么在utf8_bin中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 则可以.
解决方法
vim /etc/my.cnf
# The MySQL server
[mysqld]
lower_case_table_names=1
重启sql服务
systemctl restart mysql