Обсуждение: cannot find attribute 1 of relation (of some user table) in 7.1.3
Hi, I have the follow problem when vacuum'ing on 7.1.3: db1=# vacuum; ERROR: cannot find attribute 1 of relation docmatchsel I cannot drop the table either and the system does not seem do know the columns: db1=# \d docmatchsel Table "docmatchsel Attribute | Type | Modifier -----------+------+---------- db1=# Then I tried to reindex the table in standalone mode which gives: backend> reindex table docmatchsel force ERROR: catalog is missing 4 attributes for relid 117042636 I also reindexed the system tables to no avail. docmatchsel was created as a temporary table in the application. No indexes were defined for this table. I cannot get either run vacuum nor pg_dump with success. Is there any insight to this? I looked up the email archives but could find a way to get rid of this problem. Dirk
Dirk Lutzebaeck <lutzeb@aeccom.com> writes: > Hi, I have the follow problem when vacuum'ing on 7.1.3: > ERROR: cannot find attribute 1 of relation docmatchsel > Then I tried to reindex the table in standalone mode which gives: > backend> reindex table docmatchsel force > ERROR: catalog is missing 4 attributes for relid 117042636 Bizarre. Were there four columns altogether? > docmatchsel was created as a temporary table in the application. Since it's only a temporary table, my counsel is: 1. delete from pg_class where relname = 'docmatchsel'; 2. pg_dump, initdb, reload. You might be okay after just step 1, but given that we don't know what caused this, an initdb seems like a good idea. It would be interesting to go groveling through pg_attribute and see if we can find any traces of the missing attribute rows, but unless you're prepared to sift through the bits yourself (or give access to some developer to do it), that's not going to happen. regards, tom lane
Tom Lane writes: > Dirk Lutzebaeck <lutzeb@aeccom.com> writes: > > Hi, I have the follow problem when vacuum'ing on 7.1.3: > > ERROR: cannot find attribute 1 of relation docmatchsel > > Then I tried to reindex the table in standalone mode which gives: > > backend> reindex table docmatchsel force > > ERROR: catalog is missing 4 attributes for relid 117042636 > > Bizarre. Were there four columns altogether? Yes. > > docmatchsel was created as a temporary table in the application. > > Since it's only a temporary table, my counsel is: > > 1. delete from pg_class where relname = 'docmatchsel'; > > 2. pg_dump, initdb, reload. > > You might be okay after just step 1, but given that we don't know what > caused this, an initdb seems like a good idea. Ok, I will do this tonight. > It would be interesting to go groveling through pg_attribute and see if > we can find any traces of the missing attribute rows, but unless you're > prepared to sift through the bits yourself (or give access to some > developer to do it), that's not going to happen. I would like to go with your fixes above this time. If it happens again we should take a closer look indeed. Thanks, Dirk