您的位置:首页 > 数据库 > MySQL

mysql 5.5.4版本关于not null设置的区别

2015-10-28 16:33 706 查看
mysql版本5.5.4

Create Table
CREATE TABLE `menu` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(100) NOT NULL COMMENT '菜单名称',

`parent_id` int(10) NOT NULL COMMENT '菜单父类id',

`controller` varchar(100) NOT NULL COMMENT '控制器',

`action` varchar(100) NOT NULL COMMENT '方法',

`add_time` int(10) NOT NULL,

`update_time` int(10) NOT NULL,

`icon` varchar(30) NOT NULL COMMENT 'bootstrap的图标,一级菜单添加',

`mark` tinyint(1) NOT NULL DEFAULT '1',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=69 DEFAULT CHARSET=utf8 COMMENT='菜单表'
建表语句,

window环境下update_time为 not null,没有默认值

执行sql

INSERT INTO `menu` (`id`,`name`,`controller`,`action`,`icon`,`parent_id`,`add_time`) VALUES ('0','鑿滃崟鍚嶇О','鎺у埗鍣�','鏂规硶鍚�','1212','0','1446017793')

有警告

Warning Code : 1364

Field 'update_time' doesn't have a default value

但是还是可以插入成功

linux环境下,mysql版本5.5.44

CREATE TABLE `bannel` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`url` text NOT NULL COMMENT 'bannel路径',

`add_time` int(10) unsigned NOT NULL,

`update_time` int(10) unsigned NOT NULL,

`type` int(1) unsigned NOT NULL DEFAULT '1' COMMENT '1:专题的bannel',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

update_time 设置为not null ,没有默认值

插入

insert into `bannel` (`id`, `url`, `add_time`, `type`) values (0, '111', '123', '1')

错误代码: 1364

Field 'update_time' doesn't have a default value

报错,没有插入成功

分析原因:

参考文档:http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

建议

1:字段设置为not null 可以给一个默认值,int类型的可以为0,字符串类型的可以设置为空字符串“”,或者时间格式的可以设置为timestamp,然后设置格式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: