У меня есть странная ошибка с Postgres: всякий раз, когда я drop
мои таблицы и воссоздаю их снова, я получаю эту ошибку:
Fatal: Error: can't insert into `accounts` table. error=pq: duplicate key value violates unique constraint "account_pkey"
Чтобы исправить это, я делаю:
reindexdb mydb
И это работает, все время.Эта ошибка воспроизводима в 100% случаев.Что я делаю не так?Почему индексы становятся коррумпированными?Любые предложения о том, как отладить эту проблему?
Я не думаю, что это актуально, но таблица учетных записей определяется следующим образом:
CREATE TABLE account (
account_id SERIAL PRIMARY KEY,
owner_id INT NOT NULL DEFAULT 0,
last_balance NUMERIC DEFAULT 0,
num_tx BIGINT DEFAULT 0,
ts_created INT DEFAULT 0,
block_created INT DEFAULT 0,
deleted SMALLINT DEFAULT 0,
block_sd INT DEFAULT 0,
address TEXT NOT NULL
);
CREATE INDEX account_addr_idx ON account USING hash ("address");
CREATE INDEX account_owner_idx ON account USING btree ("owner_id");
CREATE INDEX account_deleted_idx ON account USING btree ("deleted");
Я пытался сбросить соединения или перезапуститьДемон postgres, ничего не работает, кроме переиндексации, но только после того, как я получаю фактическую ошибку.Повторная индексация сразу после создания новых таблиц не исключает ошибки.