问题:
用springboot实现一个查询功能,在测试环境不报错,在生产环境会报错,但是再点击查询也能查出数据。
报错:
F12-网络-响应里报错:code:internal_server_error,message:Error attempting to get column 'xxx' from result set. Cause: java.sql.SQLException: Error。
生产环境日志里报错:uncategorized SQLException; SQL state [null]; error code [0]; Error; nested exception is java.sql.SQLException: Error
org.springframework.jdbc.UncategorizedSQLException: Error attempting to get column 'xxx' from result set. Cause: java.sql.SQLException: Error; at com.alibaba.druid.pool.DruidPooledResultSet.getBigDecimal(DruidPooledResultSet.java:480)
at org.postgresql.jdbc.PgResultSet.getBigDecimal(PgResultSet.java:438)
at org.postgresql.jdbc.PgResultSet.getBigDecimal(PgResultSet.java:434)
at org.postgresql.jdbc.PgResultSet.getBigDecimal(PgResultSet.java:2658)
at org.postgresql.jdbc.PgResultSet.getNumeric(PgResultSet.java:2683)
at org.postgresql.util.ByteConverter.numeric(ByteConverter.java:111)
at org.postgresql.util.ByteConverter.numeric(ByteConverter.java:157)
Caused by: java.lang.IllegalArgumentException: invalid length of bytes "numeric" value
提供的信息:
1.这个字段在数据库里的数据类型是numeric,实体里是BigDecimal,精度没有限制,可以是空值,生产环境的最大值是1111111.111111。
2.把生成环境的数据放在测试环境里测试,不报错。
3.生产环境里数据库版本:PostGreSQL 9.2.4(GaussDB 8.1.1 build 4394acf2) compiled at 2023-01-16 03:09:38 commit 2609 last mr 5121 release
测试环境的数据库版本:(openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:09:38 commit 0 last mr on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit,数据库驱动程序的版本是42.3.8。
这个可能是什么原因导致的。
数据库驱动程序的版本是42.3.8和openGauss 5.0.0 PostGreSQL 9.2.4(GaussDB 8.1.1)的差别有点大,兼容性估计有些问题
现在测试环境部署个同版本的 PostGreSQL 9.2.4试下,这是比较快的处理方法