Obtenir le code d'erreur 4220 avec null SQL État
J'obtiens le code d'erreur -4220 avec null SQL État .le SP "XXXXX" contiennent VARGRAPHICS type de données. Toute trace de pile d'exception. SP est en cours d'exécution correctement, l'erreur est venue lors de la lecture de paramètre de sortie c'est à dire exécuter la méthode appelée avec succès mais la méthode getString est de donner à l'erreur.
Même si j'essaye d'accéder à n'importe quelle méthode pour obtenir la valeur de paramètre de sortie, l'erreur est à venir. Juste pour info, j'ai essayé avec la dernière version de db2 pilote mais toujours l'erreur persiste.
com.ibm.db2.jcc.am.SqlException: [jcc][t4][1065][12306][3.65.77] Caught java.io.CharConversionException. See attached Throwable for details. ERRORCODE=-4220, SQLSTATE=null
at com.ibm.db2.jcc.am.cd.a(cd.java:682)
at com.ibm.db2.jcc.am.cd.a(cd.java:60)
at com.ibm.db2.jcc.am.cd.a(cd.java:112)
at com.ibm.db2.jcc.am.gc.a(gc.java:2825)
at com.ibm.db2.jcc.am.gc.a(gc.java:582)
at com.ibm.db2.jcc.am.gc.q(gc.java:560)
at com.ibm.db2.jcc.am.gc.N(gc.java:1557)
at com.ibm.db2.jcc.am.gc.a(gc.java:1541)
at com.ibm.db2.jcc.am.CallableStatement.D(CallableStatement.java:941)
at com.ibm.db2.jcc.am.CallableStatement.getString(CallableStatement.java:920)
at com.cst.test.daoLayer.SPTest.callDB2ProcOUTParameter(SPTest.java:118)
at com.cst.test.daoLayer.SPTest.testLogic(SPTest.java:235)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.nio.charset.MalformedInputException: Input length = 5
at com.ibm.db2.jcc.am.r.a(r.java:19)
at com.ibm.db2.jcc.am.gc.a(gc.java:2821)
... 28 more
Caused by: sun.io.MalformedInputException
at sun.io.ByteToCharUTF8.convert(ByteToCharUTF8.java:278)
at com.ibm.db2.jcc.am.r.a(r.java:16)
... 29 more
OriginalL'auteur Raj | 2013-06-04
Vous devez vous connecter pour publier un commentaire.
J'ai résolu le problème en utilisant la dernière version de pot et par la mise en au-dessous du système de la propriété .
Aussi une autre façon est de désactiver le codage unicode pour les types char et varchar type dans DB2 SP qui a également travaillé pour moi ..
OriginalL'auteur Raj
Après avoir subi ce même message d'erreur, il s'est avéré que les anciennes versions de la db2jcc jar ne prennent pas en charge Java 8. Après le retour de Java 7, l'erreur disparaît. Ce peut également être résolu en téléchargeant la nouvelle/version prise en charge de la jarre d'IBM.
OriginalL'auteur skidev20
Après beaucoup de recherches, j'ai trouvé exactement pots être téléchargé à résoudre le CharConversionException.
Pour être plus précis. Ce problème est résolu dans le JDBC v9.7 Fix pack de 5. Cette version corrige APAC74895 (ce qui résout le CharConversionException), de sorte que les caractères spéciaux dans les db sont ignorées plutôt qu'une exception est générée.
Vous avez besoin de télécharger le jar à partir du site IBM
Puis ajouter la variable d'environnement suivante(Java VM arguments) à ur, tomcat paramètres
-Ddb2.ccc.charsetDecoderEncoder=3
C'est ça le problème est résolu 🙂
OriginalL'auteur user55926
Nous avons rencontré ce problème après changement de DB colonnes de CHAR VARCHAR. Le problème a été résolu après le redémarrage de notre Java Serveur - apparemment, le pilote DB2 nécessite un redémarrage pour y faire face.
OriginalL'auteur JRA_TLL
db2jcc.jar le pilote est maintenant obsolète.
Identifier votre db2 version et inclure les dernières db2jcc fichier jar de votre build path.
Dans mon cas : Db2 version = 9.7.301.326 et j'ai ajouté
Actualiser et relancez votre application.Il a travaillé pour moi.
Pour plus de détails : http://www-01.ibm.com/support/docview.wss?uid=swg21363866
OriginalL'auteur Anands23
Je rencontre le problème que mon db2jcc pot était obsolète et mon serveur a été pointant vers le obsolètes jar pour obtenir la connexion db2.
La mise à jour de la db2jcc pot résolu mon problème.
OriginalL'auteur Anurag Prasad