Doctrine架构更新/迁移错误:唯一索引

时间:2013-01-12 13:29:42

标签: symfony doctrine-orm migration

我发现了类似的问题,但是他们在应用中,我的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'

我真的希望迁移可以解决这个错误,但是唉。如何解决此问题,例如我只能在实时服务器上运行迁移命令。为什么迁移不会首先丢弃唯一索引(如果存在)?或者为什么不检测到已经存在唯一索引?

2 个答案:

答案 0 :(得分:3)

那个SQL错误并不是说已经有一个唯一的索引,它说slug列有重复的值而且因为它而无法添加索引。

确保slug列只有唯一(或者null,但可能不建议用于slug列)值,然后尝试再次运行迁移。

答案 1 :(得分:0)

这是因为数据库中的slug字段为空或重复。因此,尝试删除表中的所有内容并再次生成命令