У меня есть определение сущности, который работает на Дев и производства envs (MySQL), но не на тест (SQLite):Дубликат индекс 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
// [...]
Когда я запускаю доктрину: Схема: создать или доктрина: схема: обновление --force на тест окр, я следующее сообщение об ошибке:
[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
ли кто-то уже был такой вопрос? Как решить/игнорировать его?
Спасибо.
Просто мысли. но одна разница между двумя СУБД заключается в том, что SQLITE - это весь текст, все столбцы содержат в основном строковые данные. Возможно, что у вас есть некоторые значения, которые являются «разными» в тексте, но не в другом формате. Не могу представить, действительно ли отличный пример, но, как «123» и «0123», отличается от текста, но не в столбце INT. – asantaballa
Обязательно я понимаю. Вы имеете в виду, если у меня есть другой 'created_at_ids' где-то в другом объекте, sqlite может выйти из строя? – Soullivaneuh
Извините! Я ответил на строки с ошибками и только что понял из вашего комментария, что проблема была сама по себе. Так что да, я считаю, что если в базе данных уже есть объект, называемый created_at_idx, независимо от ассоциации с этой таблицей, он потерпит неудачу. НО это будет справедливо для большинства СУБД, поэтому до сих пор не знаю, какова будет ваша разница в поведении между двумя СУБД, кроме как просто бродячего имени. Посмотрите, существует ли один (я думаю, это «SELECT * FROM my_db_name.sqlite_master, где name =« created_at_ids »). Извините, я не могу помочь. – asantaballa