gpt4 book ai didi

java - 奇怪的 DB2 数据库问题 : Websphere Connection Pooling

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:20 24 4
gpt4 key购买 nike

我正在从在 Websphere 容器中运行的基于 Java 的 Web 应用程序运行查询。然而,这个查询非常简单,失败并出现如下奇怪的错误:

[5/15/09 16:50:33:828 IST] 0000001e SystemErr     R com.ibm.db2.jcc.b.zd: Invalid data conversion:Requested conversion would result in a loss of precision of 40000
[5/15/09 16:50:33:828 IST] 0000001e SystemErr R at com.ibm.db2.jcc.b.q.a(q.java:137)
[5/15/09 16:50:33:828 IST] 0000001e SystemErr R at com.ibm.db2.jcc.b.q.a(q.java:1189)
[5/15/09 16:50:33:828 IST] 0000001e SystemErr R at com.ibm.db2.jcc.b.ad.a(ad.java:1217)
[5/15/09 16:50:33:828 IST] 0000001e SystemErr R at com.ibm.db2.jcc.b.ad.kb(ad.java:2977)
[5/15/09 16:50:33:828 IST] 0000001e SystemErr R at com.ibm.db2.jcc.b.ad.d(ad.java:1970)
[5/15/09 16:50:33:828 IST] 0000001e SystemErr R at com.ibm.db2.jcc.b.ad.d(ad.java:2342)
[5/15/09 16:50:33:828 IST] 0000001e SystemErr R at com.ibm.db2.jcc.b.ad.U(ad.java:489)
[5/15/09 16:50:33:828 IST] 0000001e SystemErr R at com.ibm.db2.jcc.b.ad.executeQuery(ad.java:472)
[5/15/09 16:50:33:828 IST] 0000001e SystemErr R at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeQuery(WSJdbcPreparedStatement.java:559)

查询非常简单:就像

一样简单
select field1, field2 from <xyz table> where <xyz_pk> = ?

主键是一个 INTEGER(4) 并且包含值最大为 99999999 的数据。但是,当我运行此查询时,它在我的 Web 应用程序中运行在从 websphere 连接池获得的连接上,它开始因 pk 值 > 35k+ 而失败。在 jdbc 绑定(bind)代码中,我尝试执行 preparedStatement.setInt() 和 preparedStatement.setFloat()。但似乎没有任何效果!它仅适用于低于 35k+ 的所有内容,而对高于 35k+ 的所有内容均无效。

Java 的 int 大小比 35k+ 大得多,那么为什么这个查询会因这个错误而失败?这仅发生在我的应用程序中,当我使用我选择的数据库客户端尝试相同的查询时,将为 pkey 的所有值获得正确的结果!

有没有人遇到过这个问题?如果是,您是如何解决的?

最佳答案

我的错......这个问题是有约束力的。我的查询有一个整数和一个小的 int 字段,我将 small 绑定(bind)到 int 并将 int 绑定(bind)到 smallint,因此出现了问题。

关于java - 奇怪的 DB2 数据库问题 : Websphere Connection Pooling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1131676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com