开发者社区> 问答> 正文

jfinal批量插入输入Db.batch插入失败:Column 'family_?400报错

jfinal批量插入输入Db.batch插入失败:Column 'family_name' cannot be null? 400 报错

在使用Db.batch(sql, paras, 10000);插入数据的时候出现了一个错误:Column 'family_name' cannot be null,不知道原因在哪儿。而且发现数据库里有一部分数据已经被插入了。

com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.BatchUpdateException: Column 'family_name' cannot be null
at com.jfinal.plugin.activerecord.DbPro.batch(DbPro.java:843)


可是family_name是设置了的:第一个就是。

insert into resume (family_name, phone,

paras[i][0] = "测";

难道paras里必须有ID列?

@JFinal

展开
收起
爱吃鱼的程序员 2020-06-01 11:00:12 1201 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

        paras 参数是一个二维数组,第一维的每个元素代表一条记录,第二维每个元素代表第条记录中的一个字段,如果参数在这个层面是正确的,再确保一下符合数据库要求,例如,有些字段不能为 null 值。

        这里是一个例子:

    String sql = "insert into user(name, cash) values(?, ?)";
    int[] result = Db.batch(sql, new Object[][]{{"James", 888}, {"zhanjin", 888}});


    ######回复 @JFinal : 是的,被您说中了,在循环中应该是<1000的,写成<999了。谢谢了。######回复 @浪花s : 一万条不算多,mysql默认 batchsize 支持五六万。你用一个嵌套for循环判断一下 paras,肯定有一个 family_name 为 null 值######列应该没有问题。 难道是一次插入数据太多了,我一次插入了一万条。
    2020-06-01 11:00:14
    赞同 展开评论 打赏
问答分类:
SQL
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spark SQL: Past, Present and Future 立即下载
Spark SQL:Past Present &Future 立即下载
对2000多亿条数据做一次Group By 需要多久 立即下载