请帮助我找到我在这个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)