1

ここで何が間違っているのかわかりませんが、エラーが発生します:

    Error Code: 1005. Can't create table 'erm.section' (emo:150)

これがコードです。「コース」テーブルが正常に作成されました。「セクション」テーブルの course_number 属性の名前を変更しようとしましたが、うまくいきませんでした。

    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
    );
4

3 に答える 3

1

外部キーによって参照される列にインデックスを作成する必要があります。

alter table course add index (course_number);

(主キー インデックスである必要はありません。) MySQL のドキュメントから:

InnoDB では、外部キーが任意のインデックス列または列のグループを参照できます。ただし、参照されるテーブルには、参照される列が最初の列として同じ順序でリストされているインデックスが必要です。

于 2012-12-07T22:09:40.523 に答える
1

course_number は、表 course の主キーではありません。

テーブル セクションの外部キーは、別のテーブルから主キーを参照する必要があります。

于 2012-12-07T22:00:51.423 に答える
0
 A FOREIGN KEY in one table points to a PRIMARY KEY in another table.

私の知る限り、を削除しCONSTRAINT、名前を変更してから、バックを追加するのCONSTRAINTが唯一の方法です。まずはバックアップ!

これを使用してドロップします

    ALTER TABLE section
   DROP FOREIGN KEY course_number

再度追加するには、これを使用します

   ALTER TABLE section
 ADD FOREIGN KEY (course_number)
 REFERENCES course (course_number)
于 2012-12-07T22:19:40.873 に答える