Оценок пока нет Решение проблемы PostgreSQL duplicate key violates unique constraint

Я провел рефакторинг своего приложения для создания закладок Davemarks, чтобы оно работало по моему вкусу. Вчера я загрузил около 1000 закладок, скомпилированных в формате CSV из разных источников. Когда я попытался добавить новые закладки после импорта, я не смог их сохранить. Я продолжал получать сообщение duplicate key violates unique constraint, что означает, что база данных пытается сохранить записи с ключами (id), которые уже использовались. то есть (я собирался сохранить новую запись с идентификатором 1, на самом деле она должна была использовать идентификатор 1025). Это происходит, когда ваша база данных не синхронизируется.

Большой объем импорта (мы можем назвать его большим объемом в 1000 строк) обычно приводит к этой ошибке. Я просмотрел онлайн и нашел эти ссылки 1 и 2 на stackoverflow, которые помогли мне решить проблему.

Это то, что я сделал:

1. заходим в свой терминал или консоль pgsql

2. Проверьте, каким было мое самое высокое используемое значение идентификатора для моей таблицы (закладок) (с помощью SQL)

SELECT MAX(id) FROM bookmarks;
# returned 1025

3. Проверьте, каков будет мой следующий идентификатор

SELECT nextval('bookmarks_id_seq');
# returned 1

4. Очевидно, что здесь нет никакой синхронности (1025 > 1). Итак, я установил свой самый высокий используемый идентификатор в качестве отправной точки для добавления следующего идентификатора (начальная точка 1025 -> следующий используемый идентификатор — 1026).

SELECT setval('bookmarks_id_seq', (SELECT MAX(id) FROM bookmarks));
SELECT setval(pg_get_serial_sequence('bookmarks', 'id'), MAX(id)) FROM bookmarks;

Пожалуйста, оцените материал

WebSofter

Web - технологии