部署过程发现程序异常
错误信息截图如下
报错堆栈
org.springframework.jdbc.UncategorizesSQLException:
### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Schema changed
### The error may exist in URL[jar:file:app/****jar!/META_INF/mapper/***.xml]
### The error may involve com.*.dao.*DAO.getUserByPK-online
### The error occurred while setting parameters
### SQL: SELECT a.*,b.prod_type,b.ccy from AM* a,va* b where a.base_acct_no = b.base_acct_no and seq_no = ?
现象回溯
1、先执行了数据库变更脚本(表结构变更)
2、开始部署应用a路,发现应用b路有报错(微服务集群部署,每个应用两路)
3.报错关键信息:
org.springframework.jdbc.UncategorizesSQLException
java.sql.SQLSyntaxErrorException: Schema changed
The error occurred while setting parameters
4、导致业务报错
原因分析
1、AM表做了表结构变更,增加了一个字段。
2、查询信息时没有制定字段使用了select * 查询所有字段
SELECT a.,b.prod_type,b.ccy from AM* a,va* b where a.base_acct_no = b.base_acct_no and seq_no = ?
3、因为发生了表结构变更导致缓存中的Mapper参数对应不上导致报错
解决方案
**查询时不要使用select * ,需要指定查询字段。
其他可能导致类似错误(错误信息可能有差异):
字段名使用了关键字。
映射字段类型错误。
执行语句语法错误
**