MySQL数据库在Linux系统中表名区分大小写的坑

 今天晚上一个朋友在Centos7.3上面部署SSM项目,由于开发的时候MySQL数据库使用的是Windows操作系统,移植时将数据库的表结构导成SQL文件在Centos7.3操作系统MySQL上面执行。数据库服务都一切准备正常,在启动Tomcat的时候,启动日志报出数据库的表名不存在,这就比较疑惑:明明在windows上面运行都一切正常,移植到Linux服务器上面就报表不存在,数据文件是直接从数据库导出来的。

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table ‘t_starListtitle’ doesn’t exist

  后来我远程登录进服务器,查看启动日志,将报错的sql语句复制到MySQL服务器里面执行,发现执行的时会提示表不存在。
MySQL数据库在Linux系统中表名区分大小写的坑
MySQL数据库在Linux系统中表名区分大小写的坑
 经过比对发现数据库的表名L字母存在大小写差别,后来经查询发现原因:Windows下MySQL数据库默认不区分表名大小写,在Linux系统中MySQL数据库默认情况下表名要区分大小写,这就导致执行SQL语句的时候会报表不存在。
 解决方法:在[mysqld]下加入一行: lower_case_table_names=1, 修改完成后重启mysql服务即可。