Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1617 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [MySQL/JDBC/JAVA] Problème de connexion à une DB

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL/JDBC/JAVA] Problème de connexion à une DB

n°1548088
deviljin
Posté le 24-04-2007 à 14:24:09  profilanswer
 

Bonjour,
 
J'essaie d'accéder une DB qui est en local depuis un simple programme Java via JDBC. Je peux accéder à ma DB via une console MySQL, ca marche très bien, je peux faire des requêtes etc...
 
Je run mon programme via Eclipse. Sous windows, il y a aucun problème, j'arrive à faire une requête depuis Java et obtenir un resultSet.  
Mais normalement je travaille sous linux. Quand j'ai écrit ce bout de code java, j'avais Ubuntu 6.10 (Edgy), ca marchait très bien, et depuis l'autre jour, j'ai upgradé à la version 7.04 (Feisty). Et depuis, ca ne marche plus. A noter aussi que j'utilise la dernière version du connecteur MySQL/JDBC (version 5.05).  
 
Il me met une exception bizarre. Voici l'output de l'erreur :
 

Code :
  1. java.sql.SQLException: Error during query: Unexpected Exception: java.io.CharConversionException message given: null
  2. Nested Stack Trace:
  3. ** BEGIN NESTED EXCEPTION **
  4. java.io.CharConversionException
  5. STACKTRACE:
  6. java.io.CharConversionException
  7.    at gnu.gcj.convert.Input_iconv.read(libgcj.so.70)
  8.    at java.lang.String.init(libgcj.so.70)
  9.    at java.lang.String.<init>(libgcj.so.70)
  10.    at com.mysql.jdbc.SingleByteCharsetConverter.<init>(SingleByteCharsetConverter.java:153)
  11.    at com.mysql.jdbc.SingleByteCharsetConverter.initCharset(SingleByteCharsetConverter.java:108)
  12.    at com.mysql.jdbc.SingleByteCharsetConverter.getInstance(SingleByteCharsetConverter.java:86)
  13.    at com.mysql.jdbc.Connection.getCharsetConverter(Connection.java:3471)
  14.    at com.mysql.jdbc.StringUtils.getBytes(StringUtils.java:609)
  15.    at com.mysql.jdbc.Buffer.writeStringNoNull(Buffer.java:655)
  16.    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1678)
  17.    at com.mysql.jdbc.Connection.execSQL(Connection.java:3243)
  18.    at com.mysql.jdbc.Connection.configureClientCharacterSet(Connection.java:2509)
  19.    at com.mysql.jdbc.Connection.initializePropsFromServer(Connection.java:4096)
  20.    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2756)
  21.    at com.mysql.jdbc.Connection.<init>(Connection.java:1553)
  22.    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
  23.    at java.sql.DriverManager.getConnection(libgcj.so.70)
  24.    at java.sql.DriverManager.getConnection(libgcj.so.70)
  25.    at QueryDB.main(QueryDB.java:23)
  26. ** END NESTED EXCEPTION **


 
Et voici le bout de code java, responsable d'ouvrir la connexion :
 

Code :
  1. public class QueryDB {
  2. public static void main(String[] args) {
  3.  try {
  4.   Class.forName("com.mysql.jdbc.Driver" );
  5.   String sourceURL = "jdbc:mysql://localhost:3306/newBgee?user=root";
  6.   Connection databaseConnection = DriverManager.getConnection(sourceURL);
  7.   Statement statement = databaseConnection.createStatement();
  8.   ResultSet gene = statement.executeQuery("SELECT * FROM gene" );
  9.   while(gene.next())
  10.    System.out.println(gene.getString("geneName" ));
  11.  }
  12.  catch(ClassNotFoundException cnfe) {
  13.   System.err.println(cnfe);
  14.  }
  15.  catch(SQLException sqle) {
  16.   System.err.println(sqle);
  17.  }
  18. }
  19. }


 
J'ai pourtant réessayé de retaper l'URL, pensant que vu que c'est une CharConversionException, un caractère invisible aurait pu faire c**** mais ca n'a rien changé.  
Quelqu'un pourrait-il m'aider svp ?
 
Merci!
 

mood
Publicité
Posté le 24-04-2007 à 14:24:09  profilanswer
 

n°1548170
jbourdello​n
Posté le 24-04-2007 à 15:18:46  profilanswer
 

CharConversionException regarde du coté de l'encodage de tes données UTF 8 , etc...

n°1548182
deviljin
Posté le 24-04-2007 à 15:32:26  profilanswer
 

heu...pourrais-tu etre plus précis stp ? Que dois-je faire ?

n°1548445
deviljin
Posté le 25-04-2007 à 00:30:31  profilanswer
 

heeeeeeeeellllpppppp please :)

n°1548472
did-54
Posté le 25-04-2007 à 08:45:48  profilanswer
 

t'as quoi dans ta base, encodé comment ?

n°1548686
deviljin
Posté le 25-04-2007 à 15:34:43  profilanswer
 

Ben voila les infos que j'ai :
 
 

Code :
  1. > locale
  2. LANG=en_US.UTF-8
  3. LC_CTYPE="en_US.UTF-8"
  4. LC_NUMERIC="en_US.UTF-8"
  5. LC_TIME="en_US.UTF-8"
  6. LC_COLLATE="en_US.UTF-8"
  7. LC_MONETARY="en_US.UTF-8"
  8. LC_MESSAGES="en_US.UTF-8"
  9. LC_PAPER="en_US.UTF-8"
  10. LC_NAME="en_US.UTF-8"
  11. LC_ADDRESS="en_US.UTF-8"
  12. LC_TELEPHONE="en_US.UTF-8"
  13. LC_MEASUREMENT="en_US.UTF-8"
  14. LC_IDENTIFICATION="en_US.UTF-8"
  15. LC_ALL=


 

Code :
  1. mysql> SHOW VARIABLES LIKE 'character_set_client';
  2. +----------------------+--------+
  3. | Variable_name        | Value  |
  4. +----------------------+--------+
  5. | character_set_client | latin1 |
  6. +----------------------+--------+
  7. 1 row in set (0.00 sec)


 

Code :
  1. SHOW VARIABLES LIKE 'character_set_database';
  2. +------------------------+--------+
  3. | Variable_name          | Value  |
  4. +------------------------+--------+
  5. | character_set_database | latin1 |
  6. +------------------------+--------+
  7. 1 row in set (0.01 sec)


 

Code :
  1. mysql> SHOW CHARACTER SET;
  2. +----------+-----------------------------+---------------------+--------+
  3. | Charset  | Description                 | Default collation   | Maxlen |
  4. +----------+-----------------------------+---------------------+--------+
  5. | big5     | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |
  6. | dec8     | DEC West European           | dec8_swedish_ci     |      1 |
  7. | cp850    | DOS West European           | cp850_general_ci    |      1 |
  8. | hp8      | HP West European            | hp8_english_ci      |      1 |
  9. | koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 |
  10. | latin1   | cp1252 West European        | latin1_swedish_ci   |      1 |
  11. | latin2   | ISO 8859-2 Central European | latin2_general_ci   |      1 |
  12. | swe7     | 7bit Swedish                | swe7_swedish_ci     |      1 |
  13. | ascii    | US ASCII                    | ascii_general_ci    |      1 |
  14. | ujis     | EUC-JP Japanese             | ujis_japanese_ci    |      3 |
  15. | sjis     | Shift-JIS Japanese          | sjis_japanese_ci    |      2 |
  16. | hebrew   | ISO 8859-8 Hebrew           | hebrew_general_ci   |      1 |
  17. | tis620   | TIS620 Thai                 | tis620_thai_ci      |      1 |
  18. | euckr    | EUC-KR Korean               | euckr_korean_ci     |      2 |
  19. | koi8u    | KOI8-U Ukrainian            | koi8u_general_ci    |      1 |
  20. | gb2312   | GB2312 Simplified Chinese   | gb2312_chinese_ci   |      2 |
  21. | greek    | ISO 8859-7 Greek            | greek_general_ci    |      1 |
  22. | cp1250   | Windows Central European    | cp1250_general_ci   |      1 |
  23. | gbk      | GBK Simplified Chinese      | gbk_chinese_ci      |      2 |
  24. | latin5   | ISO 8859-9 Turkish          | latin5_turkish_ci   |      1 |
  25. | armscii8 | ARMSCII-8 Armenian          | armscii8_general_ci |      1 |
  26. | utf8     | UTF-8 Unicode               | utf8_general_ci     |      3 |
  27. | ucs2     | UCS-2 Unicode               | ucs2_general_ci     |      2 |
  28. | cp866    | DOS Russian                 | cp866_general_ci    |      1 |
  29. | keybcs2  | DOS Kamenicky Czech-Slovak  | keybcs2_general_ci  |      1 |
  30. | macce    | Mac Central European        | macce_general_ci    |      1 |
  31. | macroman | Mac West European           | macroman_general_ci |      1 |
  32. | cp852    | DOS Central European        | cp852_general_ci    |      1 |
  33. | latin7   | ISO 8859-13 Baltic          | latin7_general_ci   |      1 |
  34. | cp1251   | Windows Cyrillic            | cp1251_general_ci   |      1 |
  35. | cp1256   | Windows Arabic              | cp1256_general_ci   |      1 |
  36. | cp1257   | Windows Baltic              | cp1257_general_ci   |      1 |
  37. | binary   | Binary pseudo charset       | binary              |      1 |
  38. | geostd8  | GEOSTD8 Georgian            | geostd8_general_ci  |      1 |
  39. | cp932    | SJIS for Windows Japanese   | cp932_japanese_ci   |      2 |
  40. | eucjpms  | UJIS for Windows Japanese   | eucjpms_japanese_ci |      3 |
  41. +----------+-----------------------------+---------------------+--------+
  42. 36 rows in set (0.00 sec)


 

Code :
  1. mysql> SHOW COLLATION LIKE 'utf8%';
  2. +--------------------+---------+-----+---------+----------+---------+
  3. | Collation          | Charset | Id  | Default | Compiled | Sortlen |
  4. +--------------------+---------+-----+---------+----------+---------+
  5. | utf8_general_ci    | utf8    |  33 | Yes     | Yes      |       1 |
  6. | utf8_bin           | utf8    |  83 |         | Yes      |       1 |
  7. | utf8_unicode_ci    | utf8    | 192 |         | Yes      |       8 |
  8. | utf8_icelandic_ci  | utf8    | 193 |         | Yes      |       8 |
  9. | utf8_latvian_ci    | utf8    | 194 |         | Yes      |       8 |
  10. | utf8_romanian_ci   | utf8    | 195 |         | Yes      |       8 |
  11. | utf8_slovenian_ci  | utf8    | 196 |         | Yes      |       8 |
  12. | utf8_polish_ci     | utf8    | 197 |         | Yes      |       8 |
  13. | utf8_estonian_ci   | utf8    | 198 |         | Yes      |       8 |
  14. | utf8_spanish_ci    | utf8    | 199 |         | Yes      |       8 |
  15. | utf8_swedish_ci    | utf8    | 200 |         | Yes      |       8 |
  16. | utf8_turkish_ci    | utf8    | 201 |         | Yes      |       8 |
  17. | utf8_czech_ci      | utf8    | 202 |         | Yes      |       8 |
  18. | utf8_danish_ci     | utf8    | 203 |         | Yes      |       8 |
  19. | utf8_lithuanian_ci | utf8    | 204 |         | Yes      |       8 |
  20. | utf8_slovak_ci     | utf8    | 205 |         | Yes      |       8 |
  21. | utf8_spanish2_ci   | utf8    | 206 |         | Yes      |       8 |
  22. | utf8_roman_ci      | utf8    | 207 |         | Yes      |       8 |
  23. | utf8_persian_ci    | utf8    | 208 |         | Yes      |       8 |
  24. | utf8_esperanto_ci  | utf8    | 209 |         | Yes      |       8 |
  25. | utf8_hungarian_ci  | utf8    | 210 |         | Yes      |       8 |
  26. +--------------------+---------+-----+---------+----------+---------+
  27. 21 rows in set (0.00 sec)


 
Y a qqch qui cloche ou tout semble normal ? Besoin d'autres infos ?

n°1548730
deviljin
Posté le 25-04-2007 à 16:43:24  profilanswer
 

AHHHHHHHHHHHHH!!!!!
 
J'ai enfin trouvé. C'est qu'en fait Eclipse utilisait la version 1.4.2. de Java et appramment il faut mettre la 1.5.0 et la ca marche!  
Je pensais qu'Eclipse par défaut utiliserait la version la plus récente et en fait non. C'était bêtement ca qu'il fallait changer.
 
Bon ben voila :) Sujet clos.
 

n°1552023
bugbreeder
Posté le 02-05-2007 à 08:24:21  profilanswer
 

deviljin a écrit :

J'ai enfin trouvé. C'est qu'en fait Eclipse utilisait la version 1.4.2. de Java et appramment il faut mettre la 1.5.0 et la ca marche!  
Je pensais qu'Eclipse par défaut utiliserait la version la plus récente et en fait non. C'était bêtement ca qu'il fallait changer.


 
Ben non, t'as trouvé un contournement qui marche (et c'est très bien), mais pas la RAISON du problème.
 

deviljin a écrit :

Bon ben voila :) Sujet clos.


 
Tu me permets d'en remettre une couche quand même ?
Evidemment ton programme n'est pas en cause, le seul changement étant l'upgrade de Linux, c'est donc Linux qui est à l'origine du problème. Apparemment il y a un bug dans l'encodage sous certains Linux des caractères non conformes :
 
You're correct that the exception you're seeing is a GNU Classpath bug, its UTF8 decoder doesn't handle invalid sequences correctly (it throws an exception, instead of simply rendering the incorrect bytes as '?').  
 
T'as probablement contourné en utilisant un JDK-1.5.0 qui est nativement UTF-8, donc les URL qu'il envoit n'ont pas à être traduites (du coup le code GNU fautif n'a pas été appelé) en UTF-8 car elles le sont déjà, alors que le JDK-1.4.2 n'est pas nativement UTF-8. C'est certainement un bazar de ce genre la vraie raison. Ca ne change rien au fait que le bon contournement, que tu as eu la sagesse de prendre de suite, était bien d'utiliser un JDK-1.5.0, c'est vachement plus efficace que d'attendre le correctif  :sleep:  .
 
@++


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [MySQL/JDBC/JAVA] Problème de connexion à une DB

 

Sujets relatifs
probléme de paramétrage CreateWindowEx (win32)probleme d'affichage sous ie
Problème de namespaceProblème avec le positionnement du corps
Problème avec une calculatriceTest PHP / MySql
[CSS?] Problème de titre avec IE.Problème avec Debug avec log4j
[.Net - VSTO] Problème de tableaux dans wordgérer plusieur $_SESSION probleme
Plus de sujets relatifs à : [MySQL/JDBC/JAVA] Problème de connexion à une DB


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR