私はこのエラーに関する多くの投稿を読みましたが、どの解決策も問題を解決することができませんでした(私がそれらを正しく試したと仮定して)。
エラーの原因となるコードは次のとおりです。
CREATE TABLE season
(
id smallint unsigned NOT NULL auto_increment,
title varchar(25) NOT NULL,
PRIMARY KEY (id)
);
CREATE INDEX seasonId ON season(id);
DROP TABLE IF EXISTS event;
CREATE TABLE event
(
id smallint unsigned NOT NULL auto_increment,
title varchar(255) NOT NULL,
season_id smallint NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (season_id) REFERENCES season(id)
ON UPDATE RESTRICT ON DELETE RESTRICT
);
したがって、エラーによると、私の外部キー宣言に問題があります。ただし、このコードはすでにマシン上で問題なく実行されており、Linuxマシンでも完全に実行されました(現在、Windows 7で作業しています)。
これがの出力ですSHOW ENGINE INNODB STATUS
:
------------------------
LATEST FOREIGN KEY ERROR
------------------------
120229 17:43:28 Error in foreign key constraint of table fcrcontent/event:
FOREIGN KEY (season_id) REFERENCES season(id)
ON UPDATE RESTRICT ON DELETE RESTRICT
):
Cannot find an index in the referenced table where the
referenced columns appear as the first columns, or column types
in the table and the referenced table do not match for constraint.
Note that the internal storage type of ENUM and SET changed in
tables created with >= InnoDB-4.1.12, and such columns in old tables
cannot be referenced by such columns in new tables.
See http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
for correct foreign key definition.
また、新しいデータベースでスクリプトを実行しようとしましたが、うまくいきませんでした。
これがからの出力ですshow create table season
:
| season | CREATE TABLE `season` (
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(25) NOT NULL,
PRIMARY KEY (`id`),
KEY `seasonId` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |