我不确定我在这里做错了什么,但是我收到了一个错误:
Error Code: 1005. Can't create table 'erm.section' (emo:150)
这是代码。 “课程”表已成功创建。我尝试在'section'表中修改course_number attritube的名称,但这不起作用。
USE erm;
CREATE TABLE course
(
course_name VARCHAR(30) NOT NULL,
course_number VARCHAR(20) NOT NULL,
credit_hours INT NOT NULL,
department VARCHAR(10),
CONSTRAINT course_pk PRIMARY KEY (course_name)
);
CREATE TABLE section
(
section_identifier INT NOT NULL,
course_number VARCHAR(20),
semester VARCHAR(10) NOT NULL,
school_year VARCHAR(4) NOT NULL,
instructor VARCHAR(25),
CONSTRAINT section_pk PRIMARY KEY (section_identifier),
CONSTRAINT section_fk FOREIGN KEY (course_number)
REFERENCES course (course_number)
ON DELETE SET NULL
ON UPDATE CASCADE
);
答案 0 :(得分:1)
course_number不是表格课程中的主键。
表部分中的外键必须从另一个表中引用主键。
答案 1 :(得分:1)
您必须在外键引用的列上创建索引:
alter table course add index (course_number);
(它不必是主键索引。)来自MySQL documentation:
InnoDB允许外键引用任何索引列或组 列。但是,在引用的表中,必须有一个索引 其中引用的列被列为的第一列 同样的顺序。
答案 2 :(得分:0)
A FOREIGN KEY in one table points to a PRIMARY KEY in another table.
AFAIK,删除CONSTRAINT
,然后重命名,然后添加CONSTRAINT
是唯一的方法。先备份!
删除它使用此
ALTER TABLE section
DROP FOREIGN KEY course_number
并再次添加使用此
ALTER TABLE section
ADD FOREIGN KEY (course_number)
REFERENCES course (course_number)