1

この問題について StackOverflow やさまざまなフォーラムを読んでいますが、理解できないようです。以下の「CREATE TABLE Class」および「CREATE TABLE Enroll」コマンドを実行しようとすると、「ERROR 1005: Can't create tableUniversity.class (errno: 150)」が表示されます。ストレージ エンジンとして InnoDB を使用しています。最初の 2 つの「CREATE」ステートメントは正常に機能します。

「CREATE TABLE クラスと CREATE TABLE 登録」セクションが機能するようにするには、どのような変更を加える必要がありますか?

CREATE TABLE Student (
    stuId VARCHAR(6),
    lastName VARCHAR(20) NOT NULL,
    firstName VARCHAR(20) NOT NULL,
    major VARCHAR(10),
    credits FLOAT(3) DEFAULT 0,
    CONSTRAINT Student_stuId_pk PRIMARY KEY (stuId),
    CONSTRAINT Student_credits_cc CHECK ((credits>=0) AND (credits < 150)));

CREATE TABLE Faculty (
    facId VARCHAR(6),
    name VARCHAR(20) NOT NULL,
    department VARCHAR(20),
    rank VARCHAR(10),
    CONSTRAINT Faculty_facId_pk PRIMARY KEY (facId));

CREATE TABLE Class (
    classNumber VARCHAR(8),
    facId VARCHAR(6) NOT NULL,
    schedule VARCHAR(8),
    room VARCHAR(6),
    CONSTRAINT Class_classNumber_pk PRIMARY KEY (classNumber),
    CONSTRAINT Class_facId_fk FOREIGN KEY (facId) REFERENCES Faculty
        (facId) ON DELETE SET NULL,
    CONSTRAINT Class_schedule_room_uk UNIQUE (schedule, room));

CREATE TABLE Enroll (
    stuId VARCHAR(6),
    classNumber VARCHAR(8),
    grade VARCHAR(2),
    CONSTRAINT Enroll_classNumber_stuId_pk PRIMARY KEY
        (classNumber, stuId),
    CONSTRAINT Enroll_classNumber_fk FOREIGN KEY (classNumber)
        REFERENCES Class (classNumber) ON DELETE CASCADE,
CONSTRAINT Enroll_stuId_fk FOREIGN KEY (stuId) REFERENCES Student
(stuId)ON DELETE CASCADE);

完全なコマンドとエラーは次のとおりです。

mysql> CREATE TABLE Class (classNumber VARCHAR(8), facId VARCHAR(6) NOT NULL, schedule VARCHAR(8), room VARCHAR(6), CONSTRAINT Class_classNumber_pk PRIMARY KEY (classNumber), CONSTRAINT Class_facId_fk FOREIGN KEY (facId) REFERENCES Faculty (facId) ON DELETE SET NULL, CONSTRAINT Class_schedule_room_uk UNIQUE (schedule, room));
ERROR 1005 (HY000): Can't create table 'university.Class' (errno: 150)
4

3 に答える 3

2

facId の定義で NOT NULL を削除

于 2013-09-26T05:47:01.063 に答える
0

これは、外部キーエラーが原因で発生します。外部キー エラーの詳細を取得するには、SHOW ENGINE INNODB STATUS\G を実行し、「LATEST FOREIGN KEY ERROR」セクションを確認します。

Facility.facid にユニークインデックスや主キーインデックスがないため、外部キーが無効であることがわかると思います。

于 2013-09-26T05:45:54.023 に答える
0

最初に教職員テーブルを作成しましたか。このリンクを確認してください

inno db エラー

エラー150で1005を取得した場合、これはつまり

外部キー制約が正しく形成されていませんでした

于 2013-09-26T05:43:14.210 に答える