mysql修改字符编码为utf8,操作数据库会报数据池错误

时间:2021-12-17 00:42:50
mysql版本为5.5,修改配置文件my.ini里面的character-set-server=utf8,由latin1改成utf8用来处理数据库中文乱码问题。
但在操作数据库的时候,会报以下错误

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" />

#3


引用 1 楼 weixin_39309867 的回复:
你把你的这个  <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


引用 3 楼 u010049086 的回复:
Quote: 引用 1 楼 weixin_39309867 的回复:

你把你的这个  <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" />

还是不行
那你别用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" />

#2


#3


引用 1 楼 weixin_39309867 的回复:
你把你的这个  <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


引用 3 楼 u010049086 的回复:
Quote: 引用 1 楼 weixin_39309867 的回复:

你把你的这个  <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" />

还是不行
那你别用c3p0了,改成这个:
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">