Почему symfony удаляет автоинкремент в миграциях?

Имеется:
  • Symfony 5.4
  • PostgreSQL 13


Создала сущность где id - автоинкремент

/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\Column(name="id", type="integer", options={"autoincrement":true})
*/
private integer $id;


После чего выполнила команду doctrine:migrations:diff, создался php файл с миграциями (на этот момент id - автоинкремент). Далее выполнила команду doctrine:migrations:migrate, создалась таблица в БД (на этот момент тоже id - автоинкремент). Далее в сущность добавляю новое поле, создаю новую миграцию командой doctrine:migrations:diff, создается миграция в которой symfony удаляет у id автоинкремент.
  • Вопрос задан
  • 280 просмотров
Решения вопроса 1
@tukreb
Потому что SEQUENCE не для PostgreSQL, а для MySQL и его клонов.
Для PostgreSQL нужно использовать IDENTITY

/**
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private int $id;

А если вам нужно установить какое то правило например начинать с 100, то вообще нужно NONE

/**
     * @ORM\Column(type="id")
     * @ORM\GeneratedValue(strategy="NONE")
     * @ORM\SequenceGenerator(sequenceName="custom_seq", initialValue=100)
     * @ORM\Id
     */
    private int $id;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы