@Kirill-Gorelov
С ума с IT

Sequence postgres?

Используем symfony, админка sonata.

Когда через админку вставляем новую запись, то у нас ошибка
Unique violation: 7 ERROR: duplicate key value violates unique constraint "smart_product_pkey"
DETAIL: Key (id)=(1) already exists.

Ок, починили миграцией
$this->addSql('ALTER TABLE smart_product ALTER id SET DEFAULT nextval(\'smart_product_id_seq\')');


И теперь снова возникла такая ошибка. Как можно починить раз и навсегда такую ошибку.
Вот наш Entity
class SmartProduct implements EntityInterface, BlameableInterface
{
    /**
     * @var int|null
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(name="id", type="integer", nullable=false)
     */
    private ?int $id = null;
  • Вопрос задан
  • 323 просмотра
Решения вопроса 1
@Kirill-Gorelov Автор вопроса
С ума с IT
Ни один из ответов мне не помог(((

Но решение я нашел другое.
SELECT MAX(id) FROM table_name; //смотрим текущий id
SELECT nextVal('"table_name_id_seq"'); // смотрим текущий сиквенс
SELECT setval('"table_name_id_seq"', (SELECT MAX(id) FROM table_name)+1); //если id и сиквенс различные, делаем такое. Мне помогло
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@romaro
Вам, скорее всего, нужно в Постгресе поменять тип колонки id с int на serial (это аналог оракловых последовательностей). И не передавать при создании новой записи id, пусть его генерацией занимается субд.

Или попробуйте обновить модель:
/**
     * @var null
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(name="id", type="serial", nullable=false)
     */
Ответ написан
Ваш ответ на вопрос

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

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