1、项目环境
开发环境 : Windows 10
测试环境 : CentOS ( 6 & 7 )
数据库 : MySQL ( 5.5 & 5.7 )
语言 : Java 1.8 ( 1.8.0_171 & 1.8.0_261 )
生产环境 : CentOS 7 + MySQL 5.5 + Java 1.8.0_261
2、问题描述
team 中其他人开发的项目,部署在不同的服务器。可以正常部署,代码运行过程中,部分环境报错。
报错信息如下:
2021-10-27 17:39:01.345 WARN [StatisticScheduler_Worker-1]org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logExceptions():137 -SQL Error: 0, SQLState: S1009
2021-10-27 17:39:01.346 ERROR [StatisticScheduler_Worker-1]org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logExceptions():142 -HOUR_OF_DAY: 0 -> 1
3、原因分析
找了一下前辈们遇到的类似问题,总结原因:
- 字段问题;(相同代码,相同初始化脚本。排除!)
- 数据库权限问题;(都是 root 测试过。排除!)
- 兼容性问题。(这里有问题)
可以明显发现,开发、测试、生产环境不统一。根据前辈们踩过的坑,可以定位原因:存在兼容性问题,造成的异常。
4、解决方案
CentOS 7 环境,JDK 升级到 1.8.0_261 ,则不会再出现异常。
5、总结
开发、测试、生产环境要统一,小版本号等细节不一致也会出问题。
经过测试,正常的情况:
- Windows 10 + 1.8.0_261 + MySQL 5.5
- Windows 10 + 1.8.0_261 + MySQL 5.7
- CentOS 6 + 1.8.0_171 + MySQL 5.5
- CentOS 6 + 1.8.0_171 + MySQL 5.7
- CentOS 7 + 1.8.0_261 + MySQL 5.5
- CentOS 7 + 1.8.0_261 + MySQL 5.7
经过测试,异常的情况:
- CentOS 7 + 1.8.0_171 + MySQL 5.7
其他情况不测试了,原理是一样的。