15536663282  网站导航

一个因mysql表名大小写敏感引起的故障

作者:林森营销发布时间:2019-08-26 23:34

      一个后台系统(技术框架:Springboot+mysql+mybatis+shiro)在进行服务迁移的时候莫名的不能登录,经查看日志,截取如下:
      Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'XXX.XXXX' doesn't exist

 

 
      第一反应,典型的表不存在,但该服务在之前的服务上已经平稳运行很久了,代码、数据库全迁移,进数据库查看,该表是存在的。
      利用错误日志打印出来的查询语句在navicat.exe中运行确实是报错的
      仔细一看,错误日志的表明是大写的,而数据库的表明是小写的,基本确定是mysql表名大小写敏感所致。

  • 1、打开宝塔-软件管理-myslq设置

      在[mysqld] 最后添加配置 lower_case_table_names=1

 
      配置解读:
               0:严格区分大小写(Linux系统中默认为0)
               1:不区分大小写,建表时表名转换为小写(Windows系统默认为1)
               2:不区分大小写,建表时不进行大小写转换,表操作时转换为小写(Mac OS X默认为2)

  • 2、重载配置(亲测,重载配置即可,不影响业务)


 

      注:因为我的服务器是linux的,默认配置为大小写敏感,如果你的服务器是Windows的,则无需进行配置修改。


推荐新闻: