mysql - MySQL错误1005-外键不起作用

标签 mysql foreign-keys mysql-error-1005

我收到错误代码1005,这意味着我的外键有问题吗?谁能向我解释!

CREATE SCHEMA test;
Use test;

CREATE TABLE student
(
stud_id INT(7) NOT NULL , 
stud_name VARCHAR(30) NOT NULL , 
PRIMARY KEY (stud_id)
);
CREATE TABLE subject
(
subj_code VARCHAR(7) NOT NULL ,   
PRIMARY KEY (subj_code)
);
CREATE TABLE grade
(
stud_id INT(7) NOT NULL , 
subj_code VARCHAR(7) NOT NULL , 
semester INT(1) NOT NULL , 
year YEAR(4) NOT NULL , 
grade VARCHAR(4) NOT NULL , 
PRIMARY KEY (stud_id, subj_code, semester, year) ,
FOREIGN KEY (stud_id) REFERENCES student(student_id)
);
CREATE TABLE subj_enrolment
(
stud_id INT(7) NOT NULL , 
subj_code VARCHAR(7) NOT NULL , 
semester INT(1) NOT NULL , 
year YEAR(4) NOT NULL , 
comment VARCHAR(300) , 
PRIMARY KEY (stud_id, subj_code, semester, year) ,
FOREIGN KEY (stud_id) REFERENCES student(student_id) ,
FOREIGN KEY (subj_code) REFERENCES subject(subject_code)
);


任何帮助是极大的赞赏!

最佳答案

您为引用使用了错误的列名student_id不是学生表中的列名,它必须是stud_id。 subject_code也是如此。我已更正它们并在下面发布。

CREATE SCHEMA test;
Use test;

CREATE TABLE student
(
 stud_id INT(7) NOT NULL , 
 stud_name VARCHAR(30) NOT NULL , 
 PRIMARY KEY (stud_id)
);
CREATE TABLE subject
(
 subj_code VARCHAR(7) NOT NULL ,   
 PRIMARY KEY (subj_code)
);
CREATE TABLE grade
(
 stud_id INT(7) NOT NULL , 
 subj_code VARCHAR(7) NOT NULL , 
 semester INT(1) NOT NULL , 
 year YEAR(4) NOT NULL , 
 grade VARCHAR(4) NOT NULL , 
 PRIMARY KEY (stud_id, subj_code, semester, year) ,
 FOREIGN KEY (stud_id) REFERENCES student(stud_id )
);
CREATE TABLE subj_enrolment
(
 stud_id INT(7) NOT NULL , 
 subj_code VARCHAR(7) NOT NULL , 
 semester INT(1) NOT NULL , 
 year YEAR(4) NOT NULL , 
 comment VARCHAR(300) , 
 PRIMARY KEY (stud_id, subj_code, semester, year) ,
 FOREIGN KEY (stud_id) REFERENCES student(student_id) ,
 FOREIGN KEY (subj_code) REFERENCES subject(subj_code )
);

关于mysql - MySQL错误1005-外键不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46665496/

相关文章:

mysql - 创建数据库时出错 - Errno 150

mysql - 无法在 Win 2008R2 上安装 Redmine .. gem install activerecord-mysql-adapter 不工作

c# - 外键不起作用 | ASP .NET MVC 5 应用程序

php - 如何用jquery删除mysql记录

Mysql:其中 ..id != X 不包含 NULL 外键

SQL Server : how to know if any row is referencing the row to delete

mysql - 导入 magento 数据库时遇到问题

MySQL "ERROR 1005 (HY000): Can' t 创建表 'foo.#sql-12c_4' (errno : 150)"

php - 如何使用 AJAX 和 PHP 刷新 div 标签而不丢失发布的数据

mysql - WHERE fieldname IS MIN(somedate) 有没有办法在不使用子查询的情况下编写此内容?