INNODBカスケード構文/ロジックの問題
-
05-09-2019 - |
質問
私は私が作成していたSQLデータベースに問題があります。カスケーディングのために私はINNODBを使用するように切り替えるしようとしているが、私は、構文(またはおそらくロジック)を取得するように見えることができない正しいます。
ここでコードerroringするの部分です。これは、ライン40が好きではありません。
:通常の(少なくとも私には)不可解な形でエラー出力
ERROR 1005 (HY000) at line 36: Can't create table './school/staff.frm' (errno: 150)
編集ます:
ここで私はそれが助け場合にパイプにしようとしているの全体のSQLファイルです。
解決
外部キーは、インデックスでなければなりません。 (のrole.nameする)
これを試してください:
CREATE TABLE IF NOT EXISTS `role` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(30) NOT NULL,
`description` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=InnoDB;
他のヒント
「役割」列の外部キー制約は、名前の代わりにIDを使用してあるためにあなたはもしかして?これは、次の行(43行)のように見えます:
FOREIGN KEY (role) REFERENCES role(name)
である必要があります:
FOREIGN KEY (role) REFERENCES role(id)
このエラーなしで実行します。
また、 "staff.role" 列のデータ型(ライン40、ロールINT NOT NULL)はCHARに変更することができた(30)NOT NULLます。
所属していません StackOverflow