bug现场谜之报错也识趣-客户一上班报错就消失了!

bug现场谜之报错也识趣-客户一上班报错就消失了!

💡 原文中文,约3600字,阅读约需9分钟。
📝

内容提要

文章讨论了在使用IBM WebSphere和DB2数据库的Java应用中遇到的mybatis查询失败问题,错误代码-774与数据库连接池异常有关,分析发现是DB2的一个bug导致的。迁移到Tomcat后,问题得到解决,同时提到迁移过程中遇到的字符编码和数据库函数调用问题。

🎯

关键要点

  • Java应用使用IBM WebSphere和DB2数据库,遇到mybatis查询失败问题,错误代码为-774。

  • sqlcode=-774表示语句不能在复合SQL中执行,sqlstate=2D522表示ATOMIC复合语句中不允许COMMIT和ROLLBACK,初步判断与数据库事务相关。

  • 问题在中午13:00后稳定复现,14:30后消失,重启应用程序后报错消失,推测与数据库连接池中的连接异常有关。

  • 迁移到Tomcat后,发现DB2的一个bug导致存储过程被客户端取消后,使用同一连接执行SQL会报错-774。

  • 解决方案包括配置Tomcat的server.xml和context.xml,确保数据库连接正常。

  • 迁移过程中遇到字符编码问题,原项目使用GBK编码,迁移后应继续使用GBK,而不是尝试转换为UTF-8。

  • 迁移DB2数据库时需注意表缺失和数据量不匹配,使用jdbcurl的currentSchema和currentFunctionPath参数可简化查询。

延伸问答

在使用IBM DB2时,错误代码-774表示什么?

错误代码-774表示语句不能在复合SQL中执行,sqlstate=2D522表示ATOMIC复合语句中不允许COMMIT和ROLLBACK。

为什么在特定时间段内mybatis查询会失败?

在中午13:00后,数据库连接池中的连接可能处于异常状态,导致mybatis查询失败,14:30后问题消失可能与连接恢复正常有关。

如何解决DB2数据库连接池异常的问题?

迁移到Tomcat后,需配置server.xml和context.xml,确保数据库连接正常,并处理DB2的bug。

迁移项目时字符编码应如何处理?

迁移项目时应继续使用GBK编码,而不是尝试转换为UTF-8,以避免乱码问题。

在迁移DB2数据库时需要注意哪些问题?

需要注意表缺失和数据量不匹配,使用jdbcurl的currentSchema和currentFunctionPath参数可简化查询。

DB2数据库的bug是什么,如何影响查询?

DB2的bug导致存储过程被客户端取消后,使用同一连接执行SQL会报错-774,影响查询的正常执行。

🏷️

标签

➡️

继续阅读