MySQLの:なぜこのDB作成スクリプトに動作しますか?
-
22-09-2019 - |
質問
何らかの理由で、この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
所属していません StackOverflow