我从1年开始在Google App Engine上发布了一个后端项目,而且一切都不错,1周前,此例外有时会在执行JPA选择查询期间(并非总是如此)开始插入日志在云SQL中,有时查询只是成功返回结果:
内部异常:com.mysql.jdbc.exceptions.jdbc4.communicationsexception:通信链接链接失败
从服务器成功收到的最后一个数据包是309,979毫秒前。成功发送到服务器的最后一个数据包是309,981毫秒前。
错误代码:0
呼叫:选择ID,Create_time,Currency,IP,来自Country_table的名称 查询:ReadAllQuery(name =" country.findall" referenceclass = country sql ="选择ID,create_time,Currency,ip,country_table中的名称")
有时此例外是停止执行一些查询:
从服务器成功收到的最后一个数据包是219,443毫秒前。成功发送到服务器的最后一个数据包是219,446毫秒前。
在sun.reflect.nativeconstructoraccessorimpl.newinstance0(本机方法)
在sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:57) 在sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingConstructoraccessorimpl.java:45) 在java.lang.reflect.constructor.newinstance(constructor.java:44) 在com.mysql.jdbc.util.handlenewinstance(util.java:411) 在com.mysql.jdbc.sqlerror.createcommunicationsexception(sqlerror.java:1117) 在com.mysql.jdbc.mysqlio.send(mysqlio.java:3851) 在com.mysql.jdbc.mysqlio.sendcommand(mysqlio.java:2471) 在com.mysql.jdbc.mysqlio.sqlquerydirect(mysqlio.java:2651) 在com.mysql.jdbc.connectionimpl.execsql(ConnectionImpl.java:2739) 在com.mysql.jdbc.preparedstatement.executeinternal(准备statement.java:2149) 在com.mysql.jdbc.preparedstatement.executequery(regredstatement.java:2313) at rog.eclipse.persistence.internal.databaseaccess.databaseaccessor.executeselect(databaseaccessor.java:1007) atrg.eclipse.persistence.internal.databaseaccess.databaseaccessor.basicexecutecall(databaseaccessor.java:642) atrg.eclipse.persistence.internal.databaseaccess.databaseaccessor.executecall(databaseaccessor.java:558) at rog.eclipse.persistence.internal.sessions.abstractsession.basicexecutecall(AbstractSession.java:2002) atrg.eclipse.persistence.sessions.server.serversession.executecall(Serversession.java:570) 请访问org.eclipse.persistence.sessions.server.clientsession.executecall(clisteressesses.java:250)
这是因为mysql关闭了连接。
可能会自动重新连接到数据库。如果交易结果正确,则可以忽略此消息。
或者您可以将计时器扩展到开发人员控制台上的interactive_timeout
和wait_timeout
连接。这可以减少消息。