SQLSTATE [23505]: уникальное нарушение, несмотря на то, что для идентификатора установлено значение auto_increment - PullRequest
1 голос
/ 03 июля 2019

Я создал миграцию из команды PHP artisan, и она создала таблицу в моей базе данных Postgres с идентификатором, установленным в auto_increment.

Я сделал несколько сеялок в laravel, и три строки данныхпередается в ранее созданную таблицу с помощью команды php artisan db: seed.

Когда я вставляю данные через какую-то форму в той же таблице, она выдает ошибку.

error:SQLSTATE[23505]: Unique violation: 7 ERROR: duplicate key value violates unique constraint "roles_pkey" DETAIL: Key (id)=(1) already exists. (SQL: insert into "roles" ("name", "guard_name", "updated_at", "created_at") values (staff, web, 2019-07-03 07:38:37, 2019-07-03 07:38:37) returning "id")

1 Ответ

0 голосов
/ 03 июля 2019

Последовательности - это объекты, которые возвращают значение, которое на единицу больше при каждом запросе, независимо от того, к какой транзакции он был вызван.По умолчанию последовательность начинается с 1 и может применяться к таблице или ко многим таблицам, поэтому она не может знать, сколько значений уже есть в вашей таблице.Если вы хотите, чтобы вставка работала, вам нужно будет установить ее вручную.

SELECT setval('roles_id_seq', (SELECT coalesce((SELECT max(id) from roles),1)))

В этом запросе предполагается, что использованная последовательность была создана в столбце "id" таблицы "roles", если неИмя последовательности можно найти, проверив эти столбцы DDL, например, NOT NULL DEFAULT setval('the_sequence_name'), и используйте его для установки значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...