MySQL之Field 'email' doesn't have a default value
阿新 • • 發佈:2019-02-11
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裡設定該項為自動遞增。。。