多くの人と同様に、私もmySQLの悪名高いerrno 150に苦労しています。私はそれが外部キーと関係していることを知っていますが、この問題についてはすでに多くの質問があることを知っていますが、解決策を探し出すのにかなりの時間を費やした後、私はまだ特定のケースに合ったものを見つけることができません。ほぼすべてのエラーがこの旅行データベースから処理されましたが、この最終的なものは、脚付きのテーブルを作成しようとしたときに発生します。私はこれに関係するテーブルの下に掲載します。SQL 1005エラーのトラブル(errno 150)
CREATE TABLE ticket(
id int UNSIGNED NOT NULL,
passenger_id int UNSIGNED,
trip_id int UNSIGNED,
leg_no int UNSIGNED,
purchased_on datetime,
reservation_date date,
PRIMARY KEY(id),
CONSTRAINT fk_ticket_passenger_id_passenger FOREIGN KEY
(passenger_id) REFERENCES passenger(id),
CONSTRAINT fk_ticket_trip_id_trip FOREIGN KEY
(trip_id) REFERENCES trip(id),
CONSTRAINT fk_ticket_leg_no_leg FOREIGN KEY
(leg_no) REFERENCES leg(leg_no));
CREATE TABLE trip(
id int UNSIGNED NOT NULL,
number_of_legs int UNSIGNED,
PRIMARY KEY(id));
CREATE TABLE leg(
trip_id int UNSIGNED NOT NULL,
leg_no int UNSIGNED NOT NULL,
origin_id int UNSIGNED,
destination_id int UNSIGNED,
depart_time time,
arrive_time time,
vdesignation varchar(255),
price decimal(13,2),
PRIMARY KEY(trip_id, leg_no),
CONSTRAINT fk_leg_trip_id_trip FOREIGN KEY
(trip_id) REFERENCES trip(id),
CONSTRAINT fk_leg_vdesignation_vehicle FOREIGN KEY
(vdesignation) REFERENCES vehicle(designation),
CONSTRAINT fk_leg_origin_id_island FOREIGN KEY
(origin_id) REFERENCES island(id),
CONSTRAINT fk_leg_destination_id_island FOREIGN KEY
(destination_id) REFERENCES island(id));
CREATE TABLE vehicle(
designation varchar(255) NOT NULL,
vtype varchar(255),
capacity int UNSIGNED,
PRIMARY KEY(designation));
CREATE TABLE island(
id int UNSIGNED NOT NULL,
iname varchar(255),
can_fly tinyint UNSIGNED,
PRIMARY KEY(id));
私はこの質問には多くのことを尋ねます、と私はそれが古い取得すると確信している、私はあなたが私のために持っている可能性のあるアドバイスの信じられないほど感謝されることを認識しています。私は解決策をかなり徹底的に調査しており、それを把握しているようには見えません。あなたが私に与えることができる情報のおかげで、早めに!
編集:ここでは、エラーのために特定の警告情報です:
*************************** 1. row ***************************
Level: Error
Code: 1005
Message: Can't create table 'travel.leg' (errno: 150)
1 row in set (0.04 sec)
EDIT 2:どういうわけか、私は最初の場所でそれを追加するのを忘れているので、最初の答えに応じて、車両テーブルを追加しました。
あなたの言ったことに応じて車のテーブルを追加しました。残念ながら、型が一致するように見え、 'leg.origin_id'と' leg_destination_id'を 'NOT NULL'と宣言してもエラーは解決されません。彼らが両方とも同じ列を参照する方法についてのあなたのコメントに応じて、私はそれらの両方を含めることができない方法が不明です。旅行の各レグは起点と目的地の両方を持ち、どちらも常に 'island.id'値を参照します。これを行うより適切な方法がありますか? – Geoiv04
私はあなたが思ったことをやったとは思わない。あなたは本当に「車両」テーブルを持っていませんでしたか? –
いいえ、私は1つ持っていた、私は単に元の投稿にそれを含めることを忘れました。 – Geoiv04