请帮助我找到我在这个MySQL代码中的错误
我不确定我在这里做错了什么,但我得到了一个错误:请帮助我找到我在这个MySQL代码中的错误,mysql,mysql-workbench,Mysql,Mysql Workbench,我不确定我在这里做错了什么,但我得到了一个错误: Error Code: 1005. Can't create table 'erm.section' (emo:150) 这是代码。“课程”表已成功创建。我试图修改“section”表中课程编号属性的名称,但没有成功 USE erm; CREATE TABLE course ( course_name VARCHAR(30) NOT NULL, cours
Error Code: 1005. Can't create table 'erm.section' (emo:150)
这是代码。“课程”表已成功创建。我试图修改“section”表中课程编号属性的名称,但没有成功
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
);
课程号不是表课程中的主键
table部分中的外键必须引用另一个表中的主键。必须在外键引用的列上创建索引:
alter table course add index (course_number);
(它不必是主键索引。)从:
InnoDB允许外键引用任何索引列或索引组
柱。但是,在引用的表中,必须有一个索引
其中引用的列列列为列表中的第一列
同样的顺序
好的,唯一的方法是删除约束
,然后重命名,然后添加约束
。先支援
要放下它,请使用此
ALTER TABLE section
DROP FOREIGN KEY course_number
要再次添加它,请使用此
ALTER TABLE section
ADD FOREIGN KEY (course_number)
REFERENCES course (course_number)
ALTER TABLE section
ADD FOREIGN KEY (course_number)
REFERENCES course (course_number)