jdbc 执行 on duplicate key update 时出错,非空字段需要个缺省值
今天用jdbc on duplicate key update 做批量更新时候一直不成功,但是同样的sql语句在mysql的客户端工具以及命令行都能执行成功。情况大致如下// id:主键 reprints:转发数 comments:评论数
// 数据库还有一个标题字段:title varchar(255) NOT NULL
// 目的id为:2245845和2245846的两天数据在数据库中已经存在,现在想要更新 reprints和comments 值分别为:(2245845,3,2),(2245846,4,1)
insert into records (id,reprints,comments) values (2245845,3,2),(2245846,4,1) on duplicate key update reprints = values(reprints),comments = values(comments);
该语句在客户端工具以及命令行都能执行成功,但是通过jdbc执行时报错:Field 'title' doesn't have a default value
jdbc操作如下:
Statement stat = connection.createStatement();
String sql = "insert into records (id,reprints,comments) values (2245845,3,2),(2245846,4,1) on duplicate key update reprints = values(reprints),comments = values(comments);";
stat.execute(sql);
请各位大侠帮忙看看。
--------------------编程问答-------------------- title varchar(255) NOT NULL
定义为not null,所以你的title必须赋值 --------------------编程问答-------------------- 对啊!你的“数据库还有一个标题字段:title varchar(255) NOT NULL”
但是insert语句没有给这个字段赋值 --------------------编程问答--------------------
我执行的目的是更新数据并不是插入,title字段的值已经存在了。
补充:Java , Java EE