mysql - 删除数据表单表外键约束错误

标签 mysql key

我正在做一个关于在线考试的项目,该项目是从我的前辈那里复制的,但是在执行时我遇到了一些错误。在此处附上我的代码和错误消息。

表号:

CREATE TABLE IF NOT EXISTS `question` (
  `testid` bigint(20) NOT NULL DEFAULT '0',
  `qnid` int(11) NOT NULL DEFAULT '0',
  `question` varchar(500) DEFAULT NULL,
  `optiona` varchar(100) DEFAULT NULL,
  `optionb` varchar(100) DEFAULT NULL,
  `optionc` varchar(100) DEFAULT NULL,
  `optiond` varchar(100) DEFAULT NULL,
  `correctanswer` enum('optiona','optionb','optionc','optiond') DEFAULT NULL,
  `marks` int(11) DEFAULT NULL,
  PRIMARY KEY (`testid`,`qnid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--

--转储表问题的数据

INSERT INTO `question` (`testid`, `qnid`, `question`, `optiona`, `optionb`, `optionc`,     `optiond`, `correctanswer`, `marks`) VALUES
(1, 1, 'why use photoshop', 'image retouching', 'image making', 'image destroying',     'color coreection', 'optiona', 1),
(2, 1, 'java is', 'fish fry', 'software language', 'programing language', 'web maker',     'optionc', 1),
(2, 2, 'what is vaja', 'bengali', 'kokl', 'khsd', 'kojsgf', 'optiona', 1);

表###

--

--表student的表结构

CREATE TABLE IF NOT EXISTS `student` (
 `stdid` bigint(20) NOT NULL,
 `stdname` varchar(40) DEFAULT NULL,
 `stdpassword` varchar(40) DEFAULT NULL,
 `emailid` varchar(40) DEFAULT NULL,
 `contactno` varchar(20) DEFAULT NULL,
 `address` varchar(40) DEFAULT NULL,
 `city` varchar(40) DEFAULT NULL,
 `pincode` varchar(20) DEFAULT NULL,
 PRIMARY KEY (`stdid`),
 UNIQUE KEY `stdname` (`stdname`),
 UNIQUE KEY `emailid` (`emailid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--

--表studentquestion

的表结构
CREATE TABLE IF NOT EXISTS `studentquestion` (
  `stdid` bigint(20) NOT NULL DEFAULT '0',
  `testid` bigint(20) NOT NULL DEFAULT '0',
  `qnid` int(11) NOT NULL DEFAULT '0',
  `answered` enum('answered','unanswered','review') DEFAULT NULL,
  `stdanswer` enum('optiona','optionb','optionc','optiond') DEFAULT NULL,
  PRIMARY KEY (`stdid`,`testid`,`qnid`),
  KEY `testid` (`testid`,`qnid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
<小时/>
--
-- Constraints for table `question`
--
ALTER TABLE `question`
  ADD CONSTRAINT `question_ibfk_1` FOREIGN KEY (`testid`) REFERENCES `test` (`testid`);

--
-- Constraints for table `studentquestion`
--
ALTER TABLE `studentquestion`
  ADD CONSTRAINT `studentquestion_ibfk_1` FOREIGN KEY (`stdid`) REFERENCES `student`     (`stdid`),
  ADD CONSTRAINT `studentquestion_ibfk_2` FOREIGN KEY (`testid`, `qnid`) REFERENCES     `question` (`testid`, `qnid`);
<小时/>

错误消息

无法删除或更新父行:外键约束失败 (oes.studentquestion、CONSTRAINT studentquestion_ibfk_2外键(testidqnid)引用问题(testidqnid))

最佳答案

也许这不是您拥有的完整脚本。 数据很可能以错误的顺序插入。发生错误的原因是表studentquestion已经有 testid 的数据和qnid不存在的字段是 question主表。您必须重新排序插入语句,以便首先填充主表,然后填充详细表。

关于mysql - 删除数据表单表外键约束错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23669426/

相关文章:

更新中的 MySQL Join 子句

php - 如何根据关键字匹配找到相似的故事?

mysql - MySQL ID 顺序奇怪

mysql - 加入更多父表

oracle - Oracle中如何查找具有外键的表?

stored-procedures - 无法使用数字分区键查询 Cosmos DB

format - 这是哪种私钥格式?

azure - 通俗地说,Azure Key Vault 中的 Key、Secret 和证书之间的定义和区别是什么?

python - SQLAlchemy 关系加载器在表上留下锁?

c# - 将字符串、char类型转换为System.Windows.Forms.Keys