mysql 5.5.4版本關於not null設置的區別

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,然後設置格式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章