1
我有一个唯一的索引列命名为“哈希”Postgres的,重复的唯一索引
然而,当我运行查询:
SELECT *
FROM urls_0
WHERE hash = '\x0009cb31d8a6c0c64f6877c22a781804'::bytea
有两行,我不能重新索引,因为独特的违规指数。这里发生了什么。我正在使用PostgreSQL 9.3.2
我有一个唯一的索引列命名为“哈希”Postgres的,重复的唯一索引
然而,当我运行查询:
SELECT *
FROM urls_0
WHERE hash = '\x0009cb31d8a6c0c64f6877c22a781804'::bytea
有两行,我不能重新索引,因为独特的违规指数。这里发生了什么。我正在使用PostgreSQL 9.3.2
如果您使用CREATE INDEX CONCURRENTLY子句,可能会发生这种情况。
如果在扫描表,如唯一性冲突的唯一索引出现问题,CREATE INDEX命令会失败,但留下一个“非法”索引。为了查询目的,该索引将被忽略,因为它可能不完整;但是它仍然会消耗更新开销。
我认为这可能是正确的答案,但我不同时使用CREATE INDEX。该索引是首先创建的。 –
您是** 100%肯定**该*唯一*索引仅存在于名为* hash *的列* urls_0 *中? –
请问您能否连接到数据库,执行以下查询并在此处发布结果? 'SELECT indexrelid :: regclass,indisunique,indisvalid FROM pg_catalog.pg_index WHERE indrelid ='urls_0':: regclass;' – MatheusOl
@MarceloZabani:我确定 –