4

Propel ORM を使用して symfony プロジェクトの既存のデータベースからモデルを構築しようとするとエラーが発生します。

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

build-propel.xml:474:20: 外部キー a_table_on_my_schema_FK_1 によって表現される 1:1 の関係は、両方向で定義されます。Propel は現在これをサポートしていません (両方の外部キー制約が必要な場合は、カスタム SQL ファイルでこの制約を追加することを検討してください)。

schema.yml ファイルは非常に広範囲ですが、エラーの原因となったテーブルの説明 (最初のテーブルが正しく作成されていない) は次のとおりです。

self_referenced_table:
_attributes: { phpName: SelfReferencedTable }
[...]
JERARQUIC_CODE: { phpName: JerarquicCode, type: INTEGER, size: '8', required: false, foreignTable: self_referenced_table, foreignReference: JERARQUIC_CODE, onDelete: RESTRICT, onUpdate: RESTRICT }
[...]

このエラーは、自己参照テーブルが原因だと思います。

多くの要素間にジェラリックな関係を実装する必要があるため、この実装はそれを行うための良い方法です。しかし、建設時にこの問題が発生します。

手がかりを教えてもらえますか?誰かにこのエラーがありましたか?あなたならどうしますか?

ありがとうございました!!:D

4

1 に答える 1

0

解決済み: @Colin Fine が述べたように、自己参照テーブル エラーではありませんでした。ソース データベースでエラーが発生しました。mysql の既存のデータベースから schema.yml を生成しました。エラーがありました。参照のターゲット属性はテーブルの識別子ではなく、参照属性そのものでした。そのため、生成された schema.yml には間違った定義が含まれていました。私は十分に説明していないと思います:

self_referenced_table は次のとおりです。

_attributes: { phpName: SelfReferencedTable }
[...]
JERARQUIC_CODE: { phpName: JerarquicCode, type: INTEGER, size: '8', required: false, foreignTable: self_referenced_table, foreignReference: JERARQUIC_CODE, onDelete: RESTRICT, onUpdate: RESTRICT }
[...]

self_referenced_table は次のようにする必要があります。

_attributes: { phpName: SelfReferencedTable } [...]
JERARQUIC_CODE: { phpName: JerarquicCode, type: INTEGER, size: '8', required: false, foreignTable: self_referenced_table, foreignReference: TABLE_CODE, onDelete: RESTRICT, onUpdate: RESTRICT }
[...]

于 2011-07-14T09:55:45.850 に答える