项目使用的spring boot 和mysql数据,部署到新的linux环境后,发现启动报错了
一 . 情况描述:
- 还有部分异常信息就不贴上来了(提示的报错位置),
- image.png
二 . 初步排查:
- 根据报错类,点进去后定位到一个DAO上, image.png
- 把里面的HQL转成sql拿到数据库执行,报错3065 ,奇怪的是执行多次,发现偶尔有一次执行成功了 image.png
java.sql.SQLException: Unknown error 3065
- 拿着3065去google找,虽然没有找到一样的问题,但综合多个类似问题( 看文章最后参考部分 ),
三. 解决方案:
- 首先找到mysql的配置文件,默认一般为
/etc/my.cnf
或者/etc/mysql/my.cnf
, 编辑文件,在[mysqld]下面增加sql-mode="" ,保存后重启mysql 即可
# 编辑配置
vim /etc/my.cnf
# 重启mysql
service mysqld restart
image.png
- 重启mysql LINUX重启MYSQL的命令
注:如果不想改mysql 配置,那就改sql , 重点可以看 这个文章
还有另一个兼容问题
Expression #1 of ORDER BY clause is not in SELECT list, references column 'xxxx.xxx.id' which is not in SELECT list; this is incompatible with DISTINCT
- 修改为如下
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
网友评论