Bonjour,
Depuis que j'ai installé MySQL version 10.4.17 , java 8.0.281-B09 et le nouveau connecteur mysql-connector-java-5.1.49.jar, j'ai un problème de compatibilité.
Bien que j'ai défini l'option zeroDateTimeBehavior=convertToNull, j'obtiens une SQLException.
La colonne DateReprise est définie en (DATE,NULL, nullable);
J'ai remarqué que si je lançais le programme de la façon suivante :**
java -cp .;c:\jars\mysql-connector-java-5.1.49.jar;cinephil.jar cinephil.Test
j'obtiens l'exception suivante.
par contre si je place dans le Classpath un ancien mysql.jar (2014) même avec le nouveau connecteur,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: '0000-00-00' for column `cinephil`.`films`.`DateReprise` at row 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3931) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3869) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2675) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465) at com.mysql.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1536) at com.mysql.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2585) at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1464) at cinephil.Test.process(Test.java:26) at cinephil.Test.<init>(Test.java:13) at cinephil.Test.main(Test.java:34) Terminé
java -cp .;c:\jars\mysql.jar;c:\jars\mysql-connector-java-5.1.49.jar;cinephil.jar cinephil.Test
J'ai vérifié, dans la table il y a bien 0000-00-00.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Ceci a bien marché. Terminé
Ceci me fait penser que le package java.sql qui se trouve dans rt.jar n'est pas correct. Mais je n'en suis pas certain.
Qu'en pensez vous ?
Merci d'avance.
Gérard
Ci-dessous mon programme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 package cinephil; public class Test { public static java.sql.Connection cnx = null; public Test() { process(); } private void process() { try { String url = "jdbc:mysql://localhost/Cinephil?zeroDateTimeBehavior=convertToNull"; String driver = "com.mysql.jdbc.Driver"; String admin = "gege"; String pw = ""; // on charge le driver de base de données" ; Class.forName (driver).newInstance(); // On réalise une connexion à la source de données sans mot de passe cnx = java.sql.DriverManager.getConnection(url,admin,pw ); String requete = "update cinephil.films set DateReprise ='0000-00-00' where no_film=6050"; java.sql.Statement stmt = cnx.createStatement(); stmt.executeUpdate(requete); System.out.println("Ceci a bien marché."); } catch (Exception ex) {ex.printStackTrace() ;} } public static void main(String[] args) { new Test(); System.out.println("Terminé"); System.exit(0); } }
Partager