开发者社区> 问答> 正文

语句关闭后不允许执行任何操作

程序运执行数据插入操作的时候报了这个,请教一下各位大神,是偶现的一个问题。 druid 版本是 1.0.28 Caused by: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType VARCHAR . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: No operations allowed after statement closed. at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:55) at org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:87) ... 154 common frames omitted Caused by: java.sql.SQLException: No operations allowed after statement closed. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) at com.mysql.jdbc.StatementImpl.checkClosed(StatementImpl.java:442) at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:3875) at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_setString(FilterChainImpl.java:2823) at com.alibaba.druid.filter.FilterAdapter.preparedStatement_setString(FilterAdapter.java:1340) at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_setString(FilterChainImpl.java:2820) at com.alibaba.druid.filter.FilterAdapter.preparedStatement_setString(FilterAdapter.java:1340) at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_setString(FilterChainImpl.java:2820) at com.alibaba.druid.filter.FilterAdapter.preparedStatement_setString(FilterAdapter.java:1340) at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_setString(FilterChainImpl.java:2820) at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.setString(PreparedStatementProxyImpl.java:560) at com.alibaba.druid.pool.DruidPooledPreparedStatement.setString(DruidPooledPreparedStatement.java:365) at org.apache.ibatis.type.StringTypeHandler.setNonNullParameter(StringTypeHandler.java:31) at org.apache.ibatis.type.StringTypeHandler.setNonNullParameter(StringTypeHandler.java:26) at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:53) ... 155 common frames omitted

原提问者GitHub用户QuanGangDeng

展开
收起
山海行 2023-07-05 19:54:07 168 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    这个异常信息是由 MyBatis 的类型处理器(TypeHandler)抛出的,表示设置参数值时出现了错误。

    根据异常信息,似乎是在执行插入操作时,设置了一个非空(non null)的参数值,而这个参数值的类型为VARCHAR,但是该参数值无法成功设置到预编译的 SQL 语句中,因为出现了"java.sql.SQLException: No operations allowed after statement closed"异常,这种异常通常是由于连接已关闭或失效导致的。

    可能的原因和解决方案:

    连接池配置问题:由于您提到了使用了Druid连接池,所以可能是Druid连接池没有正确地配置,导致连接关闭或失效。您可以检查Druid连接池的配置是否正确。

    数据库连接异常:由于这个问题是偶现的,可能是由于在某些情况下数据库连接发生异常,例如网络问题、数据库崩溃等,导致连接失效。您可以查看数据库连接的日志,以了解是否有异常情况发生。

    MyBatis配置问题:可能是MyBatis的配置出现了问题,导致无法正确地设置参数值。您可以检查MyBatis的XML配置文件,特别是类型处理器的配置是否正确。

    数据库版本兼容性问题:有些情况下,某些数据库版本可能与MyBatis或连接池不兼容,导致出现异常情况。您可以检查您使用的数据库版本与MyBatis和连接池的版本是否兼容。

    2023-07-30 15:07:53
    赞同 展开评论 打赏
  • 升级druid版本之后解决了问题。

    原回答者GitHub用户blitzpan

    2023-07-06 11:13:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载