在sqlite上重复索引,而不是在mysql上

Sou*_*euh 6 sqlite symfony doctrine-orm

我有一个实体定义,适用于开发和生产环境(mysql),但不适用于测试(sqlite):

/**
 * Invoice
 *
 * @ORM\Table(name="invoice", indexes={
 *     @ORM\Index(name="ref_idx", columns={"ref"}),
 *     @ORM\Index(name="created_at_idx", columns={"created_at"}),
 *     @ORM\Index(name="paid_idx", columns={"paid"}),
 *     @ORM\Index(name="is_valid_idx", columns={"is_valid"}),
 *     @ORM\Index(name="canceled_idx", columns={"canceled"})
 * })
 * @ORM\Entity(repositoryClass="AppBundle\Repository\InvoiceRepository")
 */
class Invoice
// [...]
Run Code Online (Sandbox Code Playgroud)

当我运行doctrine:schema:create或doctrine:schema:update --force on test env时,我有以下错误:

  [Doctrine\DBAL\DBALException]                                                                 
  An exception occurred while executing 'CREATE INDEX created_at_idx ON invoice (created_at)':  
  SQLSTATE[HY000]: General error: 1 index created_at_idx already exists                         


  [PDOException]                                                         
  SQLSTATE[HY000]: General error: 1 index created_at_idx already exists 
Run Code Online (Sandbox Code Playgroud)

有人已经有过这种问题吗?如何解决/忽略它?

谢谢.

Sou*_*euh 19

解决方案在这里:https://stackoverflow.com/a/24634713/1731473

简而言之,您的索引应该在整个数据库中具有唯一的名称.

所以你不能有:

invoice - > created_at_idx user - > created_at_idx

但:

invoive - > invoice_created_at_idx user - > user_created_at_idx