2
我有在開發和生產ENVS(MySQL的)工作的實體定義,但不是在測試(源碼):對sqlite的複製指數,而不是MySQL的
/**
* 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
// [...]
當我運行學說:模式:創建或原則:架構:更新 - 測試環境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
是否有人已經有這種問題?如何解決/忽略它?
謝謝。
只是一個想法。但兩個DBMS之間的一個區別是SQLITE是全部文本,所有列基本上都包含字符串數據。可能你有一些文本中的「不同」但不是另一種格式的值。不能認爲如果真的很好的例子,但像「123」和「0123」在文本中不同,但不在INT列中。 – asantaballa 2014-12-01 22:11:17
我記得一定要明白。你的意思是如果我在另一個實體的某處有另一個'created_at_ids',sqlite可能會失敗? – Soullivaneuh 2014-12-01 22:18:24
對不起!我對dupe行進行了回答,並從您的評論中發現,問題在於dupe索引本身。所以是的,我相信如果數據庫中已經有一個名爲created_at_idx的對象,無論與此表關聯,它都會失敗。但是對於大多數DBMS來說這是事實,所以仍然不確定除了只是一個流浪的名字之外,兩個DBMS之間的行爲差異是什麼。看看是否存在(我認爲是「SELECT * FROM my_db_name.sqlite_master where name ='created_at_ids'」)。抱歉不能有更多的幫助。 – asantaballa 2014-12-01 22:49:55