但在操作数据库的时候,会报以下错误
ERROR: HHH000246: SQLException escaped proxy
java.sql.SQLException: You can't operate on a closed Statement!!!
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118)
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:77)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.clearBatch(NewProxyPreparedStatement.java:1115)
at org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl.releaseStatements(AbstractBatchImpl.java:163)
at org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl.release(AbstractBatchImpl.java:197)
网上说是c3p0数据池的报错,配置如下
<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/test" />
<property name="user" value="root" />
<property name="password" value="sql12345" />
<!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize" value="1" />
<!--连接池中保留的最小连接数。 -->
<property name="minPoolSize" value="1" />
<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize" value="300" />
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime" value="60" />
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement" value="5" />
<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="idleConnectionTestPeriod" value="60" />
</bean>
有遇到过这种问题的,请教一下,谢谢
5 个解决方案
#1
你把你的这个 <property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/test" />改成 <property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true" />
value="jdbc:mysql://localhost:3306/test" />改成 <property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true" />
#3
还是不行
#4
You can't operate on a closed Statement!!!
检查一下具体报错的代码段
检查一下具体报错的代码段
#5
那你别用c3p0了,改成这个:
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
#1
你把你的这个 <property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/test" />改成 <property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true" />
value="jdbc:mysql://localhost:3306/test" />改成 <property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true" />
#2
#3
你把你的这个 <property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/test" />改成 <property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true" />
还是不行
#4
You can't operate on a closed Statement!!!
检查一下具体报错的代码段
检查一下具体报错的代码段
#5
你把你的这个 <property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/test" />改成 <property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true" />
还是不行
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">