2009-11-13 2 views
0

JDK 1.6.0_16 코드에서 MySQL 5.1.32-community를 사용하여 기본 SELECT를 발행 할 때이 정말 이상한 예외가 있습니다. 반복 할 조건 : 내 응용 프로그램의 어느 위치에서든 내 OS (WindowsXP SP3)의 날짜를 변경 한 다음이 여러 번 (일반적으로 2-3 번)하는 동안 데이터베이스에서 정보를 다시로드하는 새로 고침 버튼을 누르십시오. MySQL 5.1.32- 커뮤니티 및 JDK 1.6.0_16

Last packet sent to the server was 0 ms ago. 
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 

Last packet sent to the server was 0 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.send(MysqlIO.java:3134) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1818) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2537) 
    at com.mysql.jdbc.ConnectionImpl.setTransactionIsolation(ConnectionImpl.java:5148) 

이가 내 자신의 코드의 일부 뒤에, 그리고 계속 : 난이 오류 수) 충분 이제

Caused by: java.net.SocketException: Software caused connection abort: socket write error 
    at java.net.SocketOutputStream.socketWrite0(Native Method) 
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) 
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) 
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) 
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3119) 
    ... 128 more 

을, 나는 이미 구글하고 난 제로 솔루션을 발견했다. 나는 이미 "localhost"대신 "127.0.0.1"을 사용해 보았습니다. 결과는 없습니다. 또한, MySQL 4.12 및 JRE 1.4에서이 문제를 테스트 할 수 있었고 문제가 존재하지 않습니다. 나는 일반 JDBC를 사용하고 있으며 DB에 대한 단일 연결 (풀링 된 연결이 아님)과 SQL 테이블은 InnoDB 유형을 사용하고있다. 나는이 현상에 의해 꽤 붙어 있기 때문에 어떤 도움을 주시면 감사하겠습니다.

답변

1

설명 된대로 드라이버는 OS 시간을 사용하여 연결 또는 네트워크 작업을 시간 초과합니다.

해결 방법은 예외를 catch하고 연결 설정을 다시 시도하는 것일 수 있습니다.

+0

음 ... 간단할까요? 어떻게해야합니까? 현재 연결을 닫고 다시 시작 하시겠습니까? – hypercube

+0

안녕하세요! 그게 효과가 있었어! 고마워. 우수 답변 수여! – hypercube