Bonjour,

J'utilise JDBC pour me connecter à une BdD Mysql en local. La table dans laquelle j'effectue mes requêtes est surchargée par moment et mes requêtes sont mise en attente (locked).

J'ai un programme en python qui tourne bien, il attends que les requêtes unlock. J'ai un autre programme en Java qui lui renvoie cette exception. Il doit manquer une reconnexion ou quelque chose comme ça.

Je précise que mes requêtes sont toujours exécuté par Mysql même si l'exception a été levé.


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
Last packet sent to the server was 203 ms ago.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2873)
	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2763)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3299)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2537)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2466)
	at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1383)
	at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)
	at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)
	at $java.sql.Wrapper$$EnhancerByProxool$$a4c68fa2.executeQuery(<generated>)
	....
Caused by: java.net.SocketException: Socket closed
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:129)
	at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)
	at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)
	at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)
	at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2329)
	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2774)
	... 19 more
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Ma configuration JDBC

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
  <proxool>
    <alias>baseTickets</alias>
    <driver-url>jdbc:mysql://localhost/baseTickets</driver-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <driver-properties>
      <property name="user" value="hehe"/>
      <property name="password" value="hehe"/>
    </driver-properties>
    <maximum-connection-count>10</maximum-connection-count>
    <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
    <autoReconnect>true</autoReconnect>
    <maximum-connection-lifetime>118000000</maximum-connection-lifetime>
  </proxool>
Voila j'ai tout essayé, si vous avez des idées ca serait vraiment bien