jdbc informix coincé connexion
Je suis en train d'essayer de vous connecter à un serveur de base de données Informix avec jdbc à l'aide de la méthode standard :
connection = DriverManager.getConnection("jdbc:informix-sqli://"+ip+
/"+sid+":INFORMIXSERVER="+server+";user="+user+";password="+pass+"");
Mais il continue d'essayer de se connecter et de ne pas jeter d'un message d'erreur (je suppose qu'il tente de se connecter car il ne montre rien). Je suis à l'aide d'IBM Informix, pilote 4.10.00.1534 et Java 1.7.
J'ai été en utilisant cette méthode pour se connecter à Informix serveurs jusqu'à maintenant, en fait, il échoue uniquement avec un serveur. Je peux me connecter à ce serveur par Informix clients odbc, mais il continue à défaut avec jdbc avec aucun message d'erreur.
Existe t'il une méthode pour les commentaires de la connexion jdbc? Toute suggestion au sujet de pourquoi il ne parvient pas?
Mise à JOUR: Le sqlidebug trace:
C->S (4)
SQ_VERSION
SQ_EOT
S->C (14)
SQ_VERSION
"7.31.TD6" [8]
SQ_EOT
C->S (66)
SQ_INFO
INFO_ENV
Name Length = 12
Value Length = 8
"DBTIME"="%d/%M/%Y"
"DBTEMP"="/tmp"
"SUBQCACHESZ"="10"
INFO_DONE
SQ_EOT
S->C (2)
SQ_EOT
C->S (16)
SQ_DBOPEN
"database" [8]
NOT EXCLUSIVE
SQ_EOT
S->C (28)
SQ_DONE
Warning..: 0x15
# rows...: 0
rowid....: 0
serial id: 0
SQ_COST
estimated #rows: 1
estimated I/O..: 1
SQ_EOT
C->S (78)
SQ_PREPARE
# values: 0
CMD.....: "select site from informix.systables where tabname = ' GL_COLLATE'" [65]
SQ_NDESCRIBE
SQ_WANTDONE
SQ_EOT
Et la jdbctrace.journal dit:
trying com.informix.jdbc.IfxDriver
SQLWarning: reason(Database selected) SQLState(01I04)
SQLWarning: reason(Float to decimal conversion has been used) SQLState(01I05)
SQLWarning: reason(Database has transactions) SQLState(01I01)
SQLWarning: reason(Database selected) SQLState(01I04)
SQLWarning: reason(Database has transactions) SQLState(01I01)
SQLWarning: reason(Database selected) SQLState(01I04)
Vous devez vous connecter pour publier un commentaire.
Essayez d'exécuter le code qui se connecte n'base de données Informix, mais montre aussi plein exception d'infos et de créer des fichiers de trace. Un fichier de trace est pour JDBC, on est pour Informix. Changement de l'URL de base de données, nom d'utilisateur et le mot de passe, et de l'exécuter. Vous aurez probablement voir le problème sur l'écran ou dans le fichier de trace:
Informix fichier de trace sera avec certains postfix (timestamp ou des informations similaires) et dans mon cas, c'était quelque chose comme
sqlidebug.trace1391758523500.0
. Il est binaire mais vous pouvez les analyser à l'aide desqliprt
utilitaire.Exemple de ma session avec un nom de base de données:
Dans
JDBCTrace.log
je peut trouver plus d'info intéressante (je le vois aussi sur mon écran):(J'ai traduit du polonais de sorte qu'il peut être un peu différent)
Ma suggestion est de:
ip
il n'y a que l'adresse IP ou si c'est avec numéro de portau lieu d'ajouter nom d'utilisateur et mot de passe pour ConnectString utiliser 3 paramètre version de
getConnection()
comme:(bien sûr définir vos propres paramètres régionaux à la place de mon polonaise locale)
D'espionner le trafic réseau à utiliser des outils comme Wireshark. Commencer à capturer le trafic ip à votre base de données Informix. Dans mon cas, Wireshark règle est la suivante:
Si je trompé IP Wireshark affichera "Destination inaccessible".
Vous pouvez également voir un petit truc à l'aide de la commande netstat:
Lorsque mon application a cessé de fonctionner.
En cas d'erreur (mauvaise IP, port) je vois:
getConnection()
et la commande netstat (je ne peux pas installer wireshark ici). Le 3 paremeter version ne change rien, il continue d'essayer de se connecter et de ne pas retourner un code d'erreur (l'url est bâtie avec l'adresse ip:port standard) et la commande netstat informations sont recueillies seulement dit que la connexion est établie avec le serveur, mais ne semble pas réagir. Je vous remercie beaucoup pour votre temps.IBM dit que:
From version 3.00.JC1 of IBM® Informix® JDBC Driver onwards, debug drivers are no longer shipped.
et la page décrit les étapes que vous devez créer une trace. Copie:Informix JDBC Driver now supports SQLIDEBUG. You no longer need to set values for TRACE, TRACEFILE or PROTOCOLTRACE, PROTOCOLTRACEFILE. You only need to set SQLIDEBUG.
Bien sûr, si vous n'êtes pas à l'aide de la Version 3.00.JC1 des pilotes Informix, ignorez-le au-dessus et suivre un autre ensemble d'instructions; nouveau dupliqués pour votre confort:
Espère que ça aide
Pour plus d'info, allez à [ce livre] (http://www.cursor-distribution.de/aktuell.11.70.xC6/documentation/ids_jdbc_bookmap.pdf)
Le problème que j'ai rencontré, c'est que Informix a été à l'écoute sur l'adresse IPv6 locale sur le port 7360, commande
netstat -a
a été d'afficher ce format :Donc ma connexion jdbc était toujours défaut jusqu'à ce que j'ai compris que je devrais avoir utiliser l'adresse IPv6 dans l'URL :
jdbc:informix-sqli://fe80::1125:78c0:ef17:8ab5%17:7360:user=informix;password=test;INFORMIXSERVER=ol_informix1210_2
Vous pouvez vérifier que la connexion fonctionne avec ce script simple :