删除表

时间:2018-05-29 17:42:00

标签: sql postgresql

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

0 个答案:

没有答案