首页 > 解决方案 > 休眠 testConnectionOnCheckout 不测试连接

问题描述

我在我的休眠 c3p0 属性中启用了连接测试,但即使在那之后我也面临连接问题。

这是我的连接配置:

hibernate.connection.url = "jdbc:mysql://abc.eu-west-1.rds.amazonaws.com:3306/abc";
hibernate.dialect = "org.hibernate.dialect.MySQLDialect";
hibernate.cache.provider_class = "org.hibernate.cache.NoCacheProvider";
hibernate.hbm2ddl.auto = "update";
hibernate.show_sql = "false";
hibernate.connection.provider_class = "org.hibernate.c3p0.internal.C3P0ConnectionProvider";
hibernate.c3p0.min_size = "50";
hibernate.c3p0.max_size = "50";
hibernate.c3p0.idle_test_period = "100";
hibernate.c3p0.max_statements = "0";
hibernate.c3p0.timeout = "43200";
hibernate.c3p0.preferredTestQuery = "select 1";
hibernate.c3p0.testConnectionOnCheckout = "true";

尽管启用hibernate.c3p0.testConnectionOnCheckout了我得到的错误:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 48,002,613 milliseconds ago.  The last packet sent successfully to the server was 48,002,615 milliseconds ago. is longer than the server con
figured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnec
t=true' to avoid this problem.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_192]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_192]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_192]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_192]
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:377) ~[mysql-connector-java-bin.jar:5.1.33]
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1036) ~[mysql-connector-java-bin.jar:5.1.33]
        at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3661) ~[mysql-connector-java-bin.jar:5.1.33]
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2417) ~[mysql-connector-java-bin.jar:5.1.33]
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582) ~[mysql-connector-java-bin.jar:5.1.33]
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2526) ~[mysql-connector-java-bin.jar:5.1.33]
        at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:4842) ~[mysql-connector-java-bin.jar:5.1.33]
        at com.mchange.v2.c3p0.impl.NewProxyConnection.setAutoCommit(NewProxyConnection.java:1059) ~[c3p0-0.9.5.1.jar:0.9.5.1]
        at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.begin(AbstractLogicalConnectionImplementor.java:67) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
        at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.begin(LogicalConnectionManagedImpl.java:235) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
        at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.begin(JdbcResourceLocalTransactionCoordinatorImpl.java:214) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
        at org.hibernate.engine.transaction.internal.TransactionImpl.begin(TransactionImpl.java:52) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
        at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1525) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
        at org.hibernate.jpa.internal.TransactionImpl.begin(TransactionImpl.java:45) ~[hibernate-entitymanager-5.1.0.Final.jar:5.1.0.Final]
        at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.invoke(JpaLocalTxnInterceptor.java:66) ~[guice-persist-4.0.jar:?]
        at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:77) ~[guice-4.0.jar:?]
        ...

在执行任何查询之前不应该testConnectionOnCheckout测试连接并防止这种错误?如果不是,我应该怎么做才能纠正这个错误?

标签: mysqlhibernatejdbcconnection-poolingc3p0

解决方案


推荐阅读