Ich führe eine Abfrage von meiner Java-basierten Webanwendung aus, die in einem Websphere-Container ausgeführt wird. Diese Abfrage jedoch ziemlich einfach zu sein, nicht mit einem seltsamen erorr wie folgt:Weird DB2-Datenbankproblem: Websphere Connection Pooling
[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)
Die Abfrage ist ziemlich einfach: es ist so einfach wie
select field1, field2 from <xyz table> where <xyz_pk> = ?
Der Primärschlüssel eine INTEGER (4) und hat Daten, die Werte bis zu 99999999 hat. Aber jedoch wenn ich diese Abfrage ausführen in meiner Webanwendung auf eine Verbindung von Websphere-Verbindung Pool ausgeführt wird, beginnt es für PK-Werte> 35k + fehlschlagen. Im jdbc-Bindungscode habe ich versucht, preparedStatement.setInt() und preparedStatement.setFloat() auszuführen. Aber nichts scheint zu funktionieren !! Es funktioniert nur für alles unter 35k + und scheitert für alles darüber hinaus.
Java Int-Größe ist viel größer als 35k +, warum sollte diese Abfrage mit diesem Fehler fehlschlagen? Dies geschieht nur durch meine Anwendung, wenn ich dieselbe Abfrage mit einem Datenbank-Client meiner Wahl versuche, werden die korrekten Ergebnisse für alle Werte des pKey erhalten!
Hat jemand dieses Problem schon einmal erlebt? Wenn ja, wie bist du dazu gekommen?
Können Sie einen Beispiel-Java-Code und einen vollständigen Stack-Trace für den Fall bereitstellen, in dem Sie PreparedStatement.setInt() verwendet haben? Keine Klassen in java.sql befinden sich im Stacktrace. – NamshubWriter