0

外部キーを追加しようとしましたが、追加しませんでした。私はこの問題に関するいくつかの質問を読みました。しかし、それらのオプションは私には機能しません。(このようにも試してみました

私のテーブル構造は以下の通りです

tab_project

列名

ProjectID->主キー

ProjectName

tab_project_day

主キー---->ProjectID+ Day

外部キー---->ProjectIDはtab_projectのProjectIDを参照します

ここに画像の説明を入力してください

tab_photo

主キー----> ここに画像の説明を入力してください

次のようにtab_photo外部キーを作成したい:

tab_photo.ProjectID--->参照tab_project_day.ProjectID

tab_photo.Day------->参照tab_project_day.day

ここでは、tab_photo.Dayキーを追加できません。

私はこれを試しました-

ALTER TABLE `tab_photo` ADD FOREIGN KEY (`Day`) REFERENCES
`xyz`.`tab_project_day`(`Day`) ON DELETE RESTRICT ON UPDATE RESTRICT;

以下のエラーが発生します:

#1005 - Can't create table 'xyz.#sql-97c_1c6' (errno: 150)

これの理由は何ですか?助けてください!!!

4

1 に答える 1

2

2つのテーブルの照合順序を確認してください。テーブルAがテーブルBと同じ照合ではない場合、外部キーを作成できないことがわかりました。両方のテーブルは同じ照合である必要があります。また、列は同じ照合である必要があります。

これがあなたの問題かもしれないと思います。次のクエリを実行して、照合を確認します

テーブル照合:

SELECT   TABLE_NAME,
         TABLE_COLLATION
 FROM    INFORMATION_SCHEMA.TABLES
 WHERE   TABLE_NAME = "tab_project" 
         OR TABLE_NAME="tab_project_day"

列の照合:

SELECT       TABLE_NAME
             , COLUMN_NAME
             , COLLATION_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE   TABLE_NAME = "tab_project" 
        OR TABLE_NAME="tab_project_day"
于 2013-01-15T07:11:50.907 に答える