Re: Cannot insert a duplicate key into unique index pg_calss_oid_index - Mailing list pgsql-general

From Tom Lane
Subject Re: Cannot insert a duplicate key into unique index pg_calss_oid_index
Date
Msg-id 15764.1044565988@sss.pgh.pa.us
Whole thread Raw
In response to Cannot insert a duplicate key into unique index pg_calss_oid_index  (charette@writeme.com (Stephane Charette))
List pgsql-general
charette@writeme.com (Stephane Charette) writes:
> backend> reindex database log force
> NOTICE:  relation 1247 was reindexed
> NOTICE:  relation 1249 was reindexed
> ERROR:  Cannot create unique index. Table contains non-unique values
> backend>

> What does this mean, and how do I fix it?

It would appear that you've actually got some duplicate rows (at least
with duplicate OIDs) in pg_class.

To find 'em, try
    select oid from pg_class group by oid having count(*) > 1;
then you can do
    select ctid,oid,* from pg_class where oid = <whatever>;

Assuming they are actually duplicates (everywhere except for the ctid
field), you should be able to do
    delete from pg_class where ctid = '<whatever>';
to zap all but one.  Then reindex.

I would advise an update to 7.2.4, which fixes one known possible cause
of duplicate rows.

If you can figure out a sequence that reproduces the problem, btw, I
would like to know about it.  The known cause involves a system crash
at just the wrong time; it's not clear if your "reboots" were due to
system failure or not.

            regards, tom lane

pgsql-general by date:

Previous
From: Bruno Wolff III
Date:
Subject: Re: Question: unique on multiple columns
Next
From: Tom Lane
Date:
Subject: Re: backend process crash - PL/pgSQL functions - parsing problem?