質問

私は自分のスキーマをダブルチェックしましたが、その正しい...インパクトの教義も一度それを構築しました。すべてはint(4)またはint(2)です

2 Qsここ:1。テーブルが持つことができる関係(依存関係/fks)に上限がありますか?テーブル2には最大7 fkのfksがあります。親テーブル(PK)を参照するテーブルのNOには上限がありますか? 20のテーブルに最大30のフィールドがあり、オプションの1つのID列を参照して表3を参照しています。カスケース動作の定義は必要ですか?私はそれを使用していません!

この場合、関係なく生きる方が良いですか?

エラーは次のとおりです。

 SQLSTATE[HY000]: General error: 1005 Can't create table 'sokidb.#sql-268_1d' (errno: 121). Failing Query: "ALTER TABLE Acc_Gl_Accounts ADD CONSTRAINT Acc_Gl_Accounts_society_id_Soc_Societies_id FOREIGN KEY (society_id) REFERENCES Soc_Societies(id)". Failing Query: ALTER TABLE Acc_Gl_Accounts ADD CONSTRAINT Acc_Gl_Accounts_society_id_Soc_Societies_id FOREIGN KEY (society_id) REFERENCES Soc_Societies(id)  

また、MySQLのクエリを直接起動しましたが、同じエラーが発生します。

役に立ちましたか?

解決

人々、過去数日間、私はおそらく教義に既知の問題がないことに気付きました。

私の間違いは、1つのテーブル「unsigned:true」のキーのオプションを定義し、FK定義について同じことを繰り返さなかったことでした。

また、MySQL関連のエラーをデバッグする最良の方法は、生成されたSQLスクリプトを確認することです。列の定義の違いを簡単に見つけることができます。

ジョンに感謝します。

他のヒント

おそらく、最新のMySQLバージョンのデフォルトであり、foreignkey制約エラーが発生しているInnoDBテーブルを使用している可能性があります。 ここを読んでください リクエアメントの完全なリスト。

外部キーと参照キーの対応する列は、innoDB内に同様の内部データ型を持つ必要があり、タイプ変換なしで比較できるようにする必要があります。整数タイプのサイズとサインは同じでなければなりません。文字列タイプの長さは同じではありません。非バイナリ(文字)文字列の列の場合、文字セットと照合は同じでなければなりません。

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