0

私はスキーマを再確認しましたが、その正しい...実際の教義も一度それを構築しました..そして今、いくつかのFK関係で私を悩ませています...データ型も確認しました。すべて int(4) または int(2)

2 Qs here: 1. テーブルが持てるリレーション (依存関係/FK) の数に上限はありますか? テーブルには最大 7 つの FK があります。 2. 親テーブル (PK) を参照するテーブルの数に上限はありますか? オプション テーブル 3 の 1 つの ID 列を参照する 20 のテーブルに最大 30 のフィールドがあります。CASCASE 動作の定義は必要ですか? 使っていません!

この場合、人間関係を持たない方が良いですか?

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

 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 で直接クエリを実行したところ、同じエラーが発生しました。

4

2 に答える 2

1

人々、ここ数日、私はDoctrineにおそらく既知の問題がないことに気づきました。

私の間違いは、1つのテーブル'unsigned:true'でキーのオプションを定義し、FK定義で同じことを繰り返さなかったことです:(すべての私のせいですが、解決策はデータ型を再確認することです。

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

ジョン、興味を持ってくれてありがとう。

于 2010-06-23T15:01:40.323 に答える
1

おそらく、最新の mysql バージョンのデフォルトである INNODB テーブルを使用しており、外部キー制約エラーが発生しています。リクエストの完全なリストについては、こちらをお読みください。

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

于 2011-05-01T09:47:15.093 に答える