mysql 指定的默认值无效

小猫王 发布于 2013/05/05 15:10
阅读 3K+
收藏 0

以前用mysql5.0.22 ,虽然指定了默认值但插入数据 时有些字段为null,有些又能使用默认值, 所有只有在程序里自己设定好值,再存入数据库,一直以为是数据库问或者hibernate问题;

今天装了mysql5.6.11,发现还是这样,不知道我那里出错了:


score 、online 、 right_level 都指定了默认值,但数据库里是null; reg_time能得到默认时间;

插入用的   @红薯     开源的DB类  POJO save 方法 http://www.oschina.net/code/snippet_12_2746


如果我把默认字段 设为  不允许为null,回报错:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'right_level' cannot be null;

加载中
0
小猫王
小猫王

刚把sql语句弄出来: 打印结果

[SQL] >>> INSERT INTO cwd_users(right_level,passwd,sex,birth,last_login_time,nickname,score,reg_time,this_login_time,last_login_ip,space_title,portrait,city,online,sign,userindex,email,province,this_login_ip,urlname) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)[MESSAGE]

dbutil 插入的时候把所有字段都列出来了, 可能没赋值的 都=null, 所以 默认值无效;看来还是只有程序里把默认值赋上。

小猫王
小猫王
回复 @红薯 :设了默认值的字段都被赋上null,刚看见是老大封装的,可以覆盖哈。我还以为是dbutil.
红薯
红薯
字段设置为允许为空不就可以了?
0
苦寒竹
苦寒竹
应该是类的问题。没数值的字段别写到sql上,否则就插入了null,而不是没插入
小猫王
小猫王
是哦, 才发现字段 插入null和没插入 是不一样的;
返回顶部
顶部