質問

何らかの理由で、このMySQLが失敗します:

CREATE SCHEMA IF NOT EXISTS `partB` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `partB`;

CREATE TABLE Employees ( ssn CHAR(11),
Name CHAR(30),
mlot INTEGER,
PRIMARY KEY(ssn))
ENGINE = InnoDB;

CREATE TABLE Dept_Mgr ( did INTEGER,
dname CHAR(20),
ssn CHAR(11) NOT NULL,
PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees
ON DELETE NO ACTION)
ENGINE = InnoDB;

これはエラーになります。

  

ERROR 1005(HY000):テーブルを作成できません   partb.dept_mgr(エラー番号:150)

この原因することができますか?

役に立ちましたか?

解決

このコマンドます:

SHOW ENGINE INNODB STATUS;
あなたがトラブル外部キーを作成していたときにあなたの友達です。出力(簡略)

------------------------
LATEST FOREIGN KEY ERROR
------------------------
100225  2:51:42 Error in foreign key constraint of table test/dept_mgr:
FOREIGN KEY (ssn) REFERENCES Employees
ON DELETE NO ACTION)
ENGINE = InnoDB:
Syntax error close to:

ON DELETE NO ACTION)
ENGINE = InnoDB

あなたがあなたの声明を変更する場合:

CREATE TABLE Dept_Mgr ( 
    did INTEGER,
    dname CHAR(20),
    ssn CHAR(11) NOT NULL,
    PRIMARY KEY (did),
    FOREIGN KEY (ssn) REFERENCES Employees(ssn)
) engine = innodb;

それは作業を行います。

他のヒント

あなたはキーのための外部テーブルの列(複数可)を指定する必要があります:

FOREIGN KEY (ssn) REFERENCES Employees (ssn) ...

あなただけのテーブルではなく、列を参照する外部キーを持っています。

試してみてください:参照Employee.ssn

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top