PostgreSql: ошибка дублирования pkey при вставке новых записей в таблицу восстановленной базы данных
Я использовал команды pg_dump
а также psql
сделать резервную копию моей производственной БД и восстановить ее на моем сервере разработки. Теперь, когда я пытаюсь просто вставить новую запись в одну из моих таблиц, я получаю следующее сообщение об ошибке: "ОШИБКА: значение дублирующего ключа нарушает ограничение уникальности"communication_methods_pkey"
DETAIL: ключ (id)=(13) уже существует".
Почему этот идентификатор уже используется? Мне нужно обновить что-то, чтобы счетчик приращения идентификатора вернулся на правильный путь?
1 ответ
Похоже, последовательности, используемые для создания первичного ключа для каждой таблицы, имеют неправильное значение. Интересно, что pg_dump не включал последовательность setval в конце этого (я полагаю, что это должно быть).
Postgres рекомендует следующий процесс для исправления последовательностей: https://wiki.postgresql.org/wiki/Fixing_Sequences
По сути, вам нужно идентифицировать все ваши последовательности и создать сценарий sql для запуска, чтобы установить их на 1 больше, чем идентификаторы вставленного значения.