0

私はこのテーブルを持っています:

CREATE TABLE IF NOT EXISTS `interlocuteur_fonction` (
  `id_interlocuteur_fonction` int(11) NOT NULL AUTO_INCREMENT,
  `id_interlocuteur` int(11) NOT NULL,
  `id_fonction_interlocuteur` int(11) NOT NULL,
  `defaut` varchar(1) NOT NULL,
  PRIMARY KEY (`id_interlocuteur_fonction`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2227 ;

このクエリを試すと:

ALTER TABLE `interlocuteur_fonction` engine=InnoDB

次のエラー メッセージが表示されました。

#1025 - Error on rename of './preprod_test/#sql-457_210' to './preprod_test/interlocuteur_fonction' (errno: 150)

SHOW ENGINE INNODB STATUS の出力:

LATEST FOREIGN KEY ERROR
------------------------
130328 12:00:36 Error in foreign key constraint of table 
ilang2_test/interlocuteur_fonction:
there is no index in the table which would contain
the columns as the first columns, or the data types in the
table do not match the ones in the referenced table
or one of the ON ... SET NULL columns is declared NOT NULL. 
Constraint:
,
CONSTRAINT "interlocuteur_fonction_id_interlocuteur_id_interlocuteur" FOREIGN KEY 
("id_interlocuteur") REFERENCES "interlocuteurs" ("id_interlocuteur")
InnoDB: Renaming table `preprod_test`.`#sql-457_1bb` to 
`preprod_test`.`interlocuteur_fonction` failed!

どんなアイデアでも大歓迎です。ありがとう。

4

1 に答える 1

0

ほとんどの場合、外部キーの列がそれが指している列と正確に一致しないときに、そのエラーが発生しました。(タイプ、署名あり/署名なし)

EDITあなたの投稿をもう一度読んだ後、私は本当のエラーを認識しました: あなたの対話者テーブルには、最初の列として id_interlocuteur を持つインデックスが必要です。

于 2013-03-28T11:54:12.793 に答える