向数据库中批量插入数据时发生addBatch错误
java.sql.BatchUpdateException: Batch Update Failed, See next exception for details
at org.trafodion.jdbc.t4.TrafT4PreparedStatement.executeBatch(TrafT4PreparedStatement.java:322)
at com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:128)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java)
at com.esgyn.foxconnAI.esgyndb.InsertToEsgynDBTemplate.execute(InsertToEsgynDBTemplate.java:40)
at com.esgyn.foxconnAI.esgyndb.InsertToEsgynDBTemplate$$FastClassBySpringCGLIB$$636d2358.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.lang.Thread.run(Thread.java:745)
排错的过程是痛苦的,第一反应是java代码写错了,但仔细分析之后,没有找到任何问题,浪费了很长时间才发现是因为数据库中的某个表字段类型varchar(100),长度设置的太小,有些数据插不进去,所以报错。根据此次排错经验,addBatch错误时只要不是网络什么乱七八糟的原因,就是因为要插入的数据和数据库中的表不相匹配