3

このエラーに関してSOについて多くの質問があることは知っていますが、それらから収集したものを適用しても、「テーブルを作成できません(errno:150)」というメッセージが表示されます。

CREATE TABLE sch_results
(
id INT NOT NULL AUTO_INCREMENT,
s_id INT UNSIGNED NOT NULL,
r_eid VARCHAR(10) NOT NULL,
cohorts INT,
allstudents INT,
comments TEXT,
PRIMARY KEY (id),
FOREIGN KEY (s_id) REFERENCES scholarships (id),
FOREIGN KEY (r_eid) REFERENCES sch_recommenders (eid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

外部キーが両方とも、それぞれのテーブルにその名前で正確に格納されていることを確認しました。
それぞれのデータ型がこのクエリと一致することを確認しました。2つの既存のテーブルがInnoDBとutf8を使用していることを確認しました。
UNSIGNEDNOTNULLを外部キーに追加しました。
テーブル内の2つの外部キーにインデックスを付けました。最初はs_idとr_idを使用していましたが、これにより問題が発生する可能性があると聞きました。r_eidもユニークなので、それに切り替えました。主キーではありません。

私は何が欠けていますか?

4

3 に答える 3

3

このエラーの本質的にすべての原因について、MySQLでerrno 150(およびerrno 121 /その他の外部キーエラー)を引き起こす原因についての網羅的なリソースがあります。

MySQL外部キーエラーとErrno150

于 2012-06-13T00:51:37.880 に答える
1

問題は、ソースフィールドとターゲットフィールドがすべての面で同じである必要があるということです。たとえば、ソースフィールドが「unsigned」オフで、ターゲットが「unsigned」オンの場合、このエラーが発生します。

于 2012-09-29T00:40:52.657 に答える
0

照合がutf8-general-ciではなくutf8-unicode-ciに設定されていることがわかりました。修正して、動作するようになりました。

于 2013-05-30T16:48:08.500 に答える