質問

私には2つのテーブルがあります: tab1,tab2

Tab2に外部キーを追加して、このクエリを書きたい

ALTER TABLE tab2
ADD FOREIGN KEY(name) REFERENCES tab1(name)

しかし、私はこのエラーを取得します:

error 1005(HY000):can't create table 'club.#sql-6f0_2' (errno:150)

なにが問題ですか?

Edit

i write this tables only for test.

tab1

name char(20) private key

lname char(20)


tab2

ssn int private key

name char(20)
役に立ちましたか?

解決

私はあなたの他の質問についてのコメントで約1時間前にあなたのためにこれに答えましたが、ここに再びあります:

実行して、そのエラーの詳細を取得できます SHOW ENGINE INNODB STATUS\G そして読んで LATEST FOREIGN KEY ERROR セクション。

この失敗の最も可能性の高い理由:

  • Tab1.NameとTab2.Nameはまったく同じデータ型ではありません
  • Tab1.Nameは一意ではありません

他のヒント

これを試して:

alter table tab2
add foreign key my_key(name) references tab1(name)

たぶんあなたの鍵は名前を持っているはずですか?

デフォルトのMySQLストレージエンジン(ISAM、MyISAM)で外部キーを定義することはできません。InnoDBをエンジンとして使用してから、外部キーの制約を追加します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top