【发布时间】:2016-07-03 17:54:52
【问题描述】:
MySQL 拒绝在 default null 列中插入 NULL 值:(列:tid)
表结构:
CREATE TABLE `ww_uid_tid_qid_aid` (
`id` int(11) NOT NULL,
`qzid` int(11) NOT NULL,
`uid` int(32) NOT NULL,
`tid` int(11) DEFAULT NULL,
`qid` int(11) NOT NULL,
`aid` int(11) DEFAULT NULL,
`status` tinyint(1) DEFAULT NULL,
`time` decimal(11,2) NOT NULL,
`wokbits` int(11) NOT NULL,
`create_date` datetime NOT NULL,
`update_date` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `ww_uid_tid_qid_aid`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `qzid_2` (`qzid`,`uid`,`qid`) USING BTREE,
ADD KEY `ww_uid_tid_qid_aid.tid` (`tid`),
ADD KEY `qid` (`qid`),
ADD KEY `aid` (`aid`),
ADD KEY `uid` (`uid`),
ADD KEY `qzid` (`qzid`),
ADD KEY `qid_2` (`qid`,`aid`),
ADD KEY `status` (`status`),
ADD KEY `status_2` (`status`,`aid`),
ADD KEY `qzid_3` (`qzid`,`qid`),
ADD KEY `wokbits` (`wokbits`),
ADD KEY `tid` (`tid`,`status`);
SQL 查询:
insert ignore into ww_uid_tid_qid_aid
(id,qzid,uid,tid,qid,aid,status,time,wokbits,create_date,update_date)
values
(142598981,1000110,10006849,NULL,10237838,10237840,1,3.4032369852066,44,now(),now())
错误信息:
#1048 - Column 'tid' cannot be null
也试过了:DEFAULT
insert ignore into ww_uid_tid_qid_aid
(id,qzid,uid,tid,qid,aid,status,time,wokbits,create_date,update_date)
values
(142598981,1000110,10006849,DEFAULT,10237838,10237840,1,3.4032369852066,44,now(),now())
返回相同的错误信息,
编辑:
表很大,包含 587,702 行
外键:
ALTER TABLE `ww_uid_tid_qid_aid`
ADD CONSTRAINT `ww_uid_tid_qid_aid_ibfk_1` FOREIGN KEY (`tid`) REFERENCES `tag` (`id`),
ADD CONSTRAINT `ww_uid_tid_qid_aid_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `user` (`id`),
ADD CONSTRAINT `ww_uid_tid_qid_aid_ibfk_3` FOREIGN KEY (`qid`) REFERENCES `question` (`id`),
ADD CONSTRAINT `ww_uid_tid_qid_aid_ibfk_4` FOREIGN KEY (`qzid`) REFERENCES `ww_quiz` (`id`),
ADD CONSTRAINT `ww_uid_tid_qid_aid_ibfk_5` FOREIGN KEY (`qid`,`aid`) REFERENCES `answer_choice` (`question_id`, `id`),
ADD CONSTRAINT `ww_uid_tid_qid_aid_ibfk_6` FOREIGN KEY (`status`,`aid`) REFERENCES `answer_choice` (`is_correct`, `id`),
ADD CONSTRAINT `ww_uid_tid_qid_aid_ibfk_7` FOREIGN KEY (`qzid`,`qid`) REFERENCES `ww_question` (`qzid`, `qid`);
【问题讨论】:
-
你使用的mysql版本是什么?
-
innodb_version: 5.5.41 @Malinga
-
顺便说一句,请注意您没有 PRIMARY KEY,这可能会在以后证明有问题。
-
尽量不要在创建查询中设置默认值,因为无论如何它的默认值为 null
-
其中一个原因可能是数据文件损坏。要对其进行测试,请创建另一个类似的表并将所有行插入其中。 (您可以使用'create t2 like t1' 语法)。然后将此行插入到该表中。