-1

作成中の SQL データベースに問題があります。INNODB を使用するように切り替えようとしていますが、カスケードの正しい構文 (またはおそらくロジック) を取得できないようです。

これは、コード エラーの一部です。40行目は好きじゃない。

通常の不可解な(少なくとも私にとっては)形式のエラー出力:

ERROR 1005 (HY000) at line 36: Can't create table './school/staff.frm' (errno: 150)

編集:

これが役立つ場合にパイプしようとしているSQL ファイル全体です。

4

2 に答える 2

0

外部キーはインデックスである必要があります。(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;
于 2009-02-17T22:04:05.233 に答える
0

「role」列の外部キー制約がIDの代わりに名前を使用することを意味しましたか?次の行(43行目)のようになります。

FOREIGN KEY (role) REFERENCES role(name)

する必要があります:

FOREIGN KEY (role) REFERENCES role(id)

これはエラーなしで実行されます。

または、「staff.role」列のデータ型(40行目、ロールINT NOT NULL)をCHAR(30)NOTNULLに変更することもできます。

于 2009-02-18T00:01:05.233 に答える