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位
答案 0 :(得分:0)
请通过以下选择检查您的数据:
SELECT * FROM student WHERE stud_id = 2
SELECT * FROM enroll WHERE stud_id = 2
如果其中一个未能返回一行,那么您就会知道出了什么问题。
如果两个返回行都会变得有趣。无论哪种方式,请发布您的结果。
答案 1 :(得分:0)
您是否有机会将5.7的默认引擎更改为MyIsam? 您是否在“创建表格”脚本中强制执行 MyIsam并在此处省略?
当我在innodb中测试时,我得到了:
错误:无法添加或更新子行:外键约束 失败(
r1db
。enrol
,CONSTRAINTenrol_ibfk_1
FOREIGN KEY (stud_id
)参考student
(stud_id
))