2015-01-29 5 views
0

eBean과 함께 Play Framework를 사용하고 있습니다. 나는 두 MySQL의 커넥터 - 자바 5.1 해봤MySQL 5.5에서 5.6으로 업그레이드하면서 "SQLException : Connection is closed"가 발생했습니다.

2015-01-29 09:13:03,742 - [ERROR] - from com.jolbox.bonecp.ConnectionHandle in New I/O worker #1 
Database access problem. Killing off this connection and all remaining connections in the connection pool. SQL State = HY000 

: 나는 또한 응용 프로그램 로그에이 발견

java.sql.SQLException: Connection is closed! 
com.jolbox.bonecp.ConnectionHandle.checkClosed(ConnectionHandle.java:459) 
com.jolbox.bonecp.ConnectionHandle.prepareStatement(ConnectionHandle.java:1011) 
play.api.db.evolutions.Evolutions$.prepare(Evolutions.scala:128) 
play.api.db.evolutions.Evolutions$.updateLastProblem$1(Evolutions.scala:247) 
play.api.db.evolutions.Evolutions$.applyScript(Evolutions.scala:289) 
play.api.db.evolutions.EvolutionsPlugin.handleWebCommand(Evolutions.scala:584) 
play.core.ReloadableApplication$$anonfun$handleWebCommand$1$$anonfun$apply$5$$anonfun$apply$6.apply(ApplicationProvider.scala:193) 
play.core.ReloadableApplication$$anonfun$handleWebCommand$1$$anonfun$apply$5$$anonfun$apply$6.apply(ApplicationProvider.scala:192) 
scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:110) 
scala.collection.immutable.List.foldLeft(List.scala:83) 
play.core.ReloadableApplication$$anonfun$handleWebCommand$1$$anonfun$apply$5.apply(ApplicationProvider.scala:192) 
play.core.ReloadableApplication$$anonfun$handleWebCommand$1$$anonfun$apply$5.apply(ApplicationProvider.scala:191) 
scala.Option.flatMap(Option.scala:170) 
play.core.ReloadableApplication$$anonfun$handleWebCommand$1.apply(ApplicationProvider.scala:191) 
play.core.ReloadableApplication$$anonfun$handleWebCommand$1.apply(ApplicationProvider.scala:191) 
scala.Option.orElse(Option.scala:266) 
play.core.ReloadableApplication.handleWebCommand(ApplicationProvider.scala:189) 
play.core.server.Server$$anonfun$getHandlerFor$1.apply(Server.scala:69) 
play.core.server.Server$$anonfun$getHandlerFor$1.apply(Server.scala:69) 
scala.util.control.Exception$Catch$$anonfun$either$1.apply(Exception.scala:125) 
scala.util.control.Exception$Catch$$anonfun$either$1.apply(Exception.scala:125) 
scala.util.control.Exception$Catch.apply(Exception.scala:103) 
scala.util.control.Exception$Catch.either(Exception.scala:125) 
play.core.server.Server$class.getHandlerFor(Server.scala:69) 
play.core.server.NettyServer.getHandlerFor(NettyServer.scala:37) 
play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$10.apply(PlayDefaultUpstreamHandler.scala:157) 
play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$10.apply(PlayDefaultUpstreamHandler.scala:157) 
scala.util.Either.fold(Either.scala:99) 
play.core.server.netty.PlayDefaultUpstreamHandler.messageReceived(PlayDefaultUpstreamHandler.scala:142) 
org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) 
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) 
com.typesafe.netty.http.pipelining.HttpPipeliningHandler.messageReceived(HttpPipeliningHandler.java:62) 
org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:88) 
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) 
org.jboss.netty.handler.codec.http.HttpContentDecoder.messageReceived(HttpContentDecoder.java:108) 
org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) 
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) 
org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296) 
org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:459) 
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:536) 
org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:435) 
org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) 
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) 
org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) 
org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) 
org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) 
org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108) 
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318) 
org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89) 
org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) 
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) 
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
java.lang.Thread.run(Thread.java:745) 

: 내 데이터베이스의 진화를 실행할 때 MySQL을 5.6로 업그레이드는 다음과 같은 예외가 발생했습니다 .18 및 5.1.34 및 Play 2.3.6 및 2.3.4를 사용해 보았습니다. 5.6 대신 MySQL 5.5를 사용하는 경우를 제외하고는이 문제를 해결할 수 없습니다.

+0

1 단계 : 실제 정보를 얻으려고 시도하는 것이 아닙니다. Bonecp가 더 많은 디버그/추적 로그를 작성하거나 테스트 코드를 작성하고 데이터베이스에 연결 (데이터 소스없이)을 생성하여 수동으로 생성하려고하는 특정 오류를 확인하십시오. 지금은 "작동하지 않습니다"만 있습니다. 5.1.18이 너무 오래되어서 더 이상 사용하지 않을 것이라는 점에 유의해야합니다. – Gimby

+0

Gimby에게 감사드립니다. bonecp 로그를 확인한 후 해결할 수있었습니다. – kevinzurek

답변

0

bonecp에서 로깅을 설정 한 후 어떤 SQL 문으로 연결을 종료했는지 확인할 수있었습니다. 외래 키를 삭제하지 않고 외래 키 열을 변경하려고했습니다. MySQL 5.5가 작동하는 이유는 다음과 같습니다 (5.6의 릴리스 노트에서) :

5.6.7에서 서버는 손실을 일으킬 가능성이있는 외래 키 열 변경을 금지합니다 참조 무결성. 해결 방법은 열 정의를 변경하기 전에 ALTER TABLE ... DROP FOREIGN KEY를 사용하고 이후에 ALTER TABLE ... ADE FOREIGN KEY를 사용하는 것입니다.