【发布时间】:2017-07-26 00:28:28
【问题描述】:
我正在尝试使用这个看似简单的 SQL 向我的 Postgres 9.3 数据库中的表添加一列:
ALTER TABLE quizzes ADD COLUMN deleted BOOLEAN NOT NULL DEFAULT false;
但是,我收到以下错误:
ERROR: could not create unique index "quizzes_pkey"
DETAIL: Key (id)=(10557462) is duplicated.
奇怪的是,实际上 没有行 具有该 id(这是主键,所以它不应该有重复):
SELECT id FROM quizzes WHERE id = 10557462;
id
----
(0 rows)
事实上,这个 id 似乎被某种方式跳过了:
SELECT id FROM quizzes WHERE id > 10557459 ORDER BY id LIMIT 4;
id
----------
10557460
10557461
10557463
10557464
(4 rows)
为什么这会阻止我添加列,我该如何解决?
【问题讨论】:
-
我不明白添加
deleted列会如何导致唯一键违规。你确定那是正在运行的代码吗? -
是的,我确定。我在 psql 提示符下输入该代码并按 Enter。
标签: sql postgresql alter-table