mysql default设置了默认值但插入依然为null
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql default设置了默认值但插入依然为null相关的知识,希望对你有一定的参考价值。
参考技术A mysql default值只有在insert语句中没有这个字段时才会生效,如果insert中有插入该字段而该字段取值又为null,null值将被插入到表中,default此时失效。在mybatis开发中通常会直接插入一个表对象,表中所有字段都会插入,因此如果要设置默认值,应该在业务层写逻辑,而不能依赖mysql的default来设置默认值。注:可以使用mybatis的动态sql解决该bug
MYSQL建表1064错误?
参考技术A是设置 project_state不为null,且不给默认值造成的,处理办法,取消首选不是null选项
或者为project_state 添加一个默认值
参考技术B default 修饰符可以使用 DEFAULT 修饰符为字段设定一个默认值。
如果一个字段中没有指定 DEFAULT 修饰符,MySQL 会依据这个字段是 NULL 还是 NOT NULL 自动设置默认值。
如果指定字段可以为 NULL,则 MySQL 为其设置默认值为 NULL。
如果是 NOT NULL 字段,MySQL 对于数值类型插入 0,字符串类型插入空字符串,
时间戳类型插入当前日期和时间,ENUM 类型插入枚举组的第一条。
如果创建表时要使用default修饰符,那不要忘记在default后面加个默认值。
例如:
CREATE TABLE `websites` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',
`url` varchar(255) NOT NULL DEFAULT '',
`alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
`country` char(10) NOT NULL DEFAULT '' COMMENT '国家',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以上是关于mysql default设置了默认值但插入依然为null的主要内容,如果未能解决你的问题,请参考以下文章