MySQL在出现这个Field xxx doesn't have a default value错误的原因是:我们设置了该字段为非空,但是我们没有设置默认值造成的。
比如我们创建一个表:
CREATE TABLE IF NOT EXISTS `examsystem_user` (
`userid` smallint(5) unsigned NOT NULL auto_increment,
`username` varchar(20) NOT NULL default '',
`passwd` char(32) NOT NULL default '',
`email` varchar(30) NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
我们对email字段设置了not null 但是没有设置默认值 default,所以我们在插入的时候:
INSERT INTO blog_user(username,passwd) VALUES('tomener',md5(123456));
会报如下错误:
Field 'email' doesn't have a default value
解决办法就是设置一个默认值,比如: `email` varchar(30) NOT NULL DEFAULT ''
很简单吧,就是加一个DEFAULT ''
出现这个问题的另一个原因
我碰到的情况是在navicat里写了个subjectID,设置非空,但代码里没给他写set,get()方法,
简单的解决方法,写个方法或在navicat里设置该项为自动递增。。。
比如我们创建一个表:
CREATE TABLE IF NOT EXISTS `examsystem_user` (
`userid` smallint(5) unsigned NOT NULL auto_increment,
`username` varchar(20) NOT NULL default '',
`passwd` char(32) NOT NULL default '',
`email` varchar(30) NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
我们对email字段设置了not null 但是没有设置默认值 default,所以我们在插入的时候:
INSERT INTO blog_user(username,passwd) VALUES('tomener',md5(123456));
会报如下错误:
Field 'email' doesn't have a default value
解决办法就是设置一个默认值,比如: `email` varchar(30) NOT NULL DEFAULT ''
很简单吧,就是加一个DEFAULT ''
出现这个问题的另一个原因
我碰到的情况是在navicat里写了个subjectID,设置非空,但代码里没给他写set,get()方法,
简单的解决方法,写个方法或在navicat里设置该项为自动递增。。。