3

MySQLに外部キーを追加することについて少し混乱しています

私がやろうとしているのは、学生の主キーを次のように参照することです:

CREATE TABLE Enrolled(sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid, cid), FOREIGN KEY (sid) REFERENCES Students);

しかし、私が得るのは

ERROR 1005 (HY000): Can't create table 'test_db.Enrolled' (errno: 150)

あちこち探して見つけた

MySQL "エラー 1005 (HY000): テーブル 'foo.#sql-12c_4' を作成できません (errno: 150)"

ただし、学生テーブルには既に主キーがあるため、これは問題になりません。

| Students | CREATE TABLE Students (
  sid char(20) NOT NULL DEFAULT '',
  name char(20) DEFAULT NULL,
  login char(10) DEFAULT NULL,
  age int(11) DEFAULT NULL,
  gpa float DEFAULT NULL,
  PRIMARY KEY (sid)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

かなり基本的なものが欠けているように感じますが、それを見つけることができないようです。何かアドバイス?

4

2 に答える 2

1

参照される列を明示的にするのはどうですか? 何かのようなもの:

CREATE TABLE Enrolled(
     sid CHAR(20), 
     cid CHAR(20), 
     grade CHAR(2), 

     PRIMARY KEY (sid, cid), 
     FOREIGN KEY (sid) REFERENCES Students (sid)
);

FOREIGN KEY (sid) REFERENCES Students (sid)最後の行を見てください。また、外部キーが単一の列の場合、列タイプの直後に指定できることに注意してください。

CREATE TABLE Enrolled(
    sid CHAR(20) REFERENCES Students (sid), 
    ...
于 2013-09-09T20:26:19.023 に答える