程序运执行数据插入操作的时候报了这个,请教一下各位大神,是偶现的一个问题。 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
这个异常信息是由 MyBatis 的类型处理器(TypeHandler)抛出的,表示设置参数值时出现了错误。
根据异常信息,似乎是在执行插入操作时,设置了一个非空(non null)的参数值,而这个参数值的类型为VARCHAR,但是该参数值无法成功设置到预编译的 SQL 语句中,因为出现了"java.sql.SQLException: No operations allowed after statement closed"异常,这种异常通常是由于连接已关闭或失效导致的。
可能的原因和解决方案:
连接池配置问题:由于您提到了使用了Druid连接池,所以可能是Druid连接池没有正确地配置,导致连接关闭或失效。您可以检查Druid连接池的配置是否正确。
数据库连接异常:由于这个问题是偶现的,可能是由于在某些情况下数据库连接发生异常,例如网络问题、数据库崩溃等,导致连接失效。您可以查看数据库连接的日志,以了解是否有异常情况发生。
MyBatis配置问题:可能是MyBatis的配置出现了问题,导致无法正确地设置参数值。您可以检查MyBatis的XML配置文件,特别是类型处理器的配置是否正确。
数据库版本兼容性问题:有些情况下,某些数据库版本可能与MyBatis或连接池不兼容,导致出现异常情况。您可以检查您使用的数据库版本与MyBatis和连接池的版本是否兼容。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。