2011-08-12 52 views
4

我已經有了一個MySQL數據庫,因此我希望從existing database創建映射元數據。來自現有數據庫的Symfony2 Doctrine2映射(例外)

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

但是我得到了以下異常

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

我沒有任何主/複合鍵別處在數據庫中使用customerId但是我用它作爲一個外鍵數次。

但是,我不知道如何在組合鍵或其他主鍵customerId可以影響這一點。

+1

此錯誤是指出在同一個表上存在重複(或多個)外鍵。保持1 FK解決了這個問題。 – pdolinaj

回答

3

另一種解決方案:

丟棄所有的外鍵,然後將工作:)。

我知道這不是建議,但它幫助了我。和生成的實體工作正常。

要刪除所有的外鍵:

運行該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

謝謝!這對我很好。 –

+2

不是一個很好的解決方案來刪除所有外鍵。該錯誤顯然表明在同一個表上有重複的(或更多)外鍵。保持1 FK解決了這個問題。 – pdolinaj

+0

我想提一下,數據庫備份過程可能是必要的。 +1幫助。 – BlitZ

0

我得到了同樣的錯誤,我注意到我有一些雙鍵(約束)在數據庫中的單個關係。刪除它,萬物工作得很好。