PostgreSQL — как сбросить очередь

Admin PostgreSQL

Сбрасываем ID очереди у главного ключа в базе данных PostgreSQL.

В консоль SQL вводим две команды:

ALTER SEQUENCE operations_id_seq RESTART WITH 1;
UPDATE operations SET id=nextval('operations_id_seq');

где:
operations — название таблицы в которой будем менять;
id — название колонки, которую хотим сбросить;
seq — это оставляем как есть.

Ошибки

На тот случай когда возникают такие ошибки:

psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint «portfolio_pk»
DETAIL: Key (id)=(2) already exists.

psycopg2.errors.NotNullViolation: null value in column «id» violates not-null constraint
DETAIL: Failing row contains

[2020-10-09 19:54:42] [23505] ERROR: duplicate key value violates unique constraint «operations_id_key»
[2020-10-09 19:54:42] Detail: Key (id)=(1) already exists.

sqlalchemy.orm.exc.FlushError: Instance has a NULL identity key. If this is an auto-generated value, check that the database table allows generation of new primary key values, and that the mapped Column object is configured to expect these generated values. Ensure also that this flush() is not occurring at an inappropriate time, such as within a load() event.

Для решение этих проблем сбросим идентификаторы иначе. Зададим высокое значение, чтобы исключить дублирование, а затем сбросим по нормальному:

ALTER SEQUENCE operations_id_seq RESTART WITH 1;
UPDATE operations SET id = 10000000 + NEXTVAL ('operations_id_seq');

ALTER SEQUENCE operations_id_seq RESTART WITH 1;
UPDATE operations SET id=NEXTVAL('operations_id_seq');

На сайте отсутствует реклама! Значете почему?

Помогать людям - моё хобби. А навыки разработчика позволяют не парится нулевой монетизизацией этого сайта. Хотя...

Если вам помогла информация, то даже от доната в 40 рублей мне будет приятно. Докину немного, куплю латте в макдаке, вспомню за чей счет банкет и карма вам зачтется!

Но и просто оставленный комментарий благодарности ниже принесет мне улыбку радости :)

А если захочется написать всякие гадости с переходом на личности, да тоже не стесняйтесь, но обычно я отправляю такое в спам. Люблю, когда дома чисто.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"PostgreSQL — как сбросить очередь"