0

外部キーを割り当てようとしています。

「ユーザー」テーブルがあります:

user_id        mediumint(8) unsigned, NotNull, Primary Key, AutoIncrement,
first_name     varchar(20)          , NotNull
last_name      varchar(40)          , NotNull

そしてセテラ。そして、「プロジェクト」テーブルがあります:

project_id          int(10) unsigned, NotNull, Primary Key, AutoIncrement,
project_name        varchar(20)     , NotNull
user_id             mediumint(8)    , NotNull

そして、私は外部キーについて学びました。それらは素晴らしい音ですが、機能させることができません...

ALTER TABLE projects 
ADD CONSTRAINT FK_projects 
FOREIGN KEY (user_id) 
REFERENCES users(user_id) 
ON UPDATE CASCADE 
ON DELETE CASCADE;

エラー メッセージを返します。

エラー 1005 (HY000): テーブル 'thermal.#sql-62d9_4' を作成できません (errno: 150)

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

4

1 に答える 1

0

それを見つけた。

問題は、2 つの user_id 列が同じタイプではないことです。ユーザーでは「mediumint unsigned」ですが、プロジェクトでは単に「mediumint」であり、「unsignued」が何を意味するのか完全にはわかりません。

解決策は、それらを変更することです。

ALTER TABLE projects
MODIFY COULMN user_id MEDIUMINT UNSIGNED;

そして、上からコマンドを実行すると、すべてが機能しました。

于 2013-05-09T22:16:59.020 に答える