2011-08-12 6 views
4

すでにMySQLデータベースがあるので、existing databaseからマッピングメタデータを作成したいと思います。 Symfony2既存のデータベースからのDoctrine2マッピング(例外)

php app/console doctrine:mapping:convert xml ./src/MainBundle/Resources/config/doctrine/metadata/orm --from-database --force 

は、しかし、私は次の例外しかし、私は外国キーを数回としてそれを使用しました私は、データベース内のどこか他の任意のコンポジット/プライマリキーで customerIdを使用していない

[Doctrine\ORM\Mapping\MappingException] 
Property "customerid" in "Accountcustomer" was already declared, but it must be declared only once 

を得ました。

しかし、複合キーまたは別のプライマリキーにcustomerIdがどのように影響するかわかりません。 http://www.doctrine-project.org/docs/orm/2.0/en/reference/limitations-and-known-issues.html

+1

このエラーは、同じテーブルに重複した(または複数の)外部キーがあることを示しています。 1FKだけを維持することで問題が解決されます。 – pdolinaj

答えて

6

残念ながら教義2.0は がリンクチェック...外部キーとして主キーをサポートしていません

ドロップすべての外部キーを、そして、それは:)動作します。

私はそれが推奨されていませんが、それは私を助けたと知っています。生成されたエンティティは正常に動作していました。

実行このSQLクエリ -

SELECT concat('ALTER TABLE ', TABLE_NAME, ' DROP FOREIGN KEY ', CONSTRAINT_NAME, ';') 
FROM information_schema.key_column_usage 
WHERE CONSTRAINT_SCHEMA = 'db_name' AND referenced_table_name IS NOT NULL; 

し、再度結果、SQLクエリを実行します。

は、すべての外部キーをドロップします。

+0

でも、doctrine:schema:createと全く同じエラーが空のデータベースにあります... – FMaz008

+0

これはDoctrine 2.1(リバースエンジニアリングの部分)ではまだ動作しません – Matt

3

別の解決策:

+0

ありがとう!これは私にとって素晴らしい仕事でした。 –

+2

すべての外部キーを削除する良い方法ではありません。エラーは明らかに同じテーブルに重複した(またはそれ以上の)外部キーがあることを示していました。 1FKだけを維持することで問題が解決されます。 – pdolinaj

+0

私は、そのデータベースのバックアップ手順のreprecautionが必要かもしれないと言及します。 +1ヘルプ。 – BlitZ

0

私は同じエラーが発生し、私はdb内の単一の関係のためにいくつかのダブルキー(制約)があることに気付きました。それを削除すると、すべてうまくいきました。

関連する問題