2013-01-12 39 views
0

我發現類似的問題,但他們的應用程序,礦井涉及CLI命令,即php app/console doctrine:schema:update --forcephp app/console doctrine:migrations:migrate主義架構更新/遷移錯誤:唯一索引

錯誤:

Migration 20130112151503 failed during Execution. Error An exception occurred wh 
ile executing 'CREATE UNIQUE INDEX UNIQ_68D3801E989D9B62 ON artists (slug)': 



    SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 
    'UNIQ_68D3801E989D9B62' 




    [Doctrine\DBAL\DBALException] 
    An exception occurred while executing 'CREATE UNIQUE INDEX UNIQ_68D3801E989 
    D9B62 ON artists (slug)': 

    SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' fo 
    r key 'UNIQ_68D3801E989D9B62' 

我真的希望移民會照顧這個錯誤,但是可惜。我該如何解決這個問題,例如我只能在實時服務器上運行migrations命令。爲什麼遷移不會首先刪除唯一索引(如果存在)?或者爲什麼它沒有檢測到已經有一個唯一的索引?

回答

3

SQL錯誤並不是說已經有一個唯一的索引,而是說slug列有重複的值,並且因爲它而不能添加索引。

確保slug列只有唯一(或null,但可能不推薦用於slug列)值,然後嘗試再次運行遷移。

+0

啊,我明白了。它是空的,我會改變它 – Tjorriemorrie

+0

@Mike,你的意思是說,如果我已經有數據庫填充數據,並創建新的列與獨特的:真我會一直得到這個錯誤?那麼如何處理無法在生產服務器上執行的遷移? –

+0

是的,如果您嘗試在已具有重複值的列上創建唯一索引,那麼您將遇到錯誤。在嘗試創建唯一索引之前,您必須先解析所有重複項。如果嘗試執行其他操作,您的遷移將會崩潰。 – Mike

0

這是因爲數據庫中的slug字段爲空或重複。所以,試着刪除表格中的所有內容並重新生成命令