mysql insert 空数据默认值问题

版权声明:本文为博主原创文章,未经博主允许不得转载,转载请附原文链接说明出处。 https://blog.csdn.net/xupeng874395012/article/details/79757266
CREATE TABLE
    task
    (
        id bigint unsigned NOT NULL AUTO_INCREMENT,
        taskType INT(10) unsigned DEFAULT '0' NOT NULL,
        retryCount INT DEFAULT '3' NOT NULL,
        status INT(10) unsigned DEFAULT '0' NOT NULL COMMENT '0:初始化 1:处理完成',
        taskData VARCHAR(2048) DEFAULT '0',
        treeId bigint NOT NULL,
        operateType INT(10) NOT NULL COMMENT '0:上线 1:下线',
        creator VARCHAR(20) NOT NULL,
        createTime DATETIME NOT NULL,
        updateTime DATETIME NOT NULL,
        PRIMARY KEY (id)
    )
    ENGINE=InnoDB DEFAULT CHARSET=utf8
insert into task ( taskType, retryCount,  taskData, treeId, operateType, creator, createTime, updateTime) values ( 0, 0,  null, 26, 0, 'xp', '2018-03-25 15:31:54', '2018-03-28 19:50:30');

insert into task ( taskType, retryCount, status, taskData, treeId, operateType, creator, createTime, updateTime) values ( 0, 0, null, null, 26, 0, 'xp', '2018-03-25 15:31:54', '2018-03-28 19:50:30');

观察下上面的两条sql,第一条执行没有问题,第二调则不能通过,在我们研发系统中,更多场景下insert 生成的sql是第二种,这也是造成了,我创建数据库的时候明明设置了默认值了,但是insert 的时候还是会失败,原因就是我们给这个字段放了个null,默认值在插入语句中没有此字段的时候会默认的把预定值保存上

猜你喜欢

转载自blog.csdn.net/xupeng874395012/article/details/79757266