我的数据库不尊重我的外键

时间:2018-03-24 14:32:08

标签: mysql wampserver

https://www.youtube.com/watch?v=eTK9TLciRpU&t=5s

我试图复制本教程。我有两个数据库学生并注册:

CREATE TABLE student(
stud_id int NOT NULL AUTO_INCREMENT, 
name VARCHAR(30) NOT NULL,
age INT NOT NULL,
PRIMARY KEY(stud_id)
);

CREATE TABLE enrol(
rol_no INT NOT NULL AUTO_INCREMENT,
stud_id INT NOT NULL,
PRIMARY KEY(rol_no),
FOREIGN KEY(stud_id) 
REFERENCES student(stud_id)
);

我向表格学生插入一条记录

INSERT INTO `student` (`name`,`age`) VALUES ('Bill',25);

+---------+------+-----+
| stud_id | name | age |
+---------+------+-----+
|       1 | Bill |  25 |
+---------+------+-----+

当我在外键中输入不正确的值(如2)时,它没有检测到表格中的2不是,就像视频教程一样。

INSERT INTO `enrol` (`stud_id`) VALUES(2);
Query OK, 1 row affected (0.00 sec)

+--------+---------+
| rol_no | stud_id |
+--------+---------+
|      1 |       2 |
+--------+---------+

我的MySQL版本是

  

mysql Server版本:5.7.19

使用Wamp64:

  

WampServer版本3.1.0 64位

2 个答案:

答案 0 :(得分:0)

请通过以下选择检查您的数据:

SELECT * FROM student WHERE stud_id = 2

SELECT * FROM enroll WHERE stud_id = 2

如果其中一个未能返回一行,那么您就会知道出了什么问题。

如果两个返回行都会变得有趣。无论哪种方式,请发布您的结果。

答案 1 :(得分:0)

您是否有机会将5.7的默认引擎更改为MyIsam? 您是否在“创建表格”脚本中强制执行 MyIsam并在此处省略?

当我在innodb中测试时,我得到了:

  

错误:无法添加或更新子行:外键约束   失败(r1dbenrol,CONSTRAINT enrol_ibfk_1 FOREIGN KEY   (stud_id)参考studentstud_id))