Задать вопрос
slo_nik
@slo_nik

Как правильно создать sequence?

Необходимо создать уникальное значение для не id столбца.

В сущности столбец обозначен так

#[ORM\Column(type: 'integer', nullable: true)]
    private int $internalId;


Создаю миграцию

public function up(Schema $schema): void
    {
        $this->addSql('ALTER TABLE amqp_auth_user ADD internal_id INT NULL');
        $this->addSql('CREATE SEQUENCE amqp_auth_user_internal_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
        $this->addSql('ALTER TABLE amqp_auth_user ALTER internal_id SET DEFAULT nextval(\'amqp_auth_user_internal_id_seq\')');
        $this->addSql('ALTER SEQUENCE amqp_auth_user_internal_id_seq OWNED BY public.amqp_auth_user.internal_id;');
    }


Выполняю запрос на вставку в таблицу. Всё работает, "internal_id" заполняется последовательными значениями.

Но валицаю схема не проходит

[ERROR] The database schema is not in sync with the current mapping file.


Команда orm:schema-tool:update --dump-sql выдаёт запрос на удаление значения по умолчанию для столбца "internal_id"
ALTER TABLE amqp_auth_user ALTER internal_id DROP DEFAULT;


После выполнения данного запроса естественно ничего работать не будет, "interanal_id" будет заполняться "null".

Что не так я делаю? Как сделать так, чтобы проходила валидация схемы и не требовало DROP DEFAULT для internal_id?

p.s.

Пробовал и такой вариант

#[ORM\Column(insertable: false, updatable: false, columnDefinition: 'serial')]
 private int $internalId;


Результат тот же. Валидация не проходит, требует удаление значения по умолчанию.
  • Вопрос задан
  • 123 просмотра
Подписаться 1 Простой 13 комментариев
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы