我和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守护程序,除了重新索引之外没有任何作用,但只有在我得到实际错误之后才能运行。在创建新表后立即重新索引并不能避免错误。