Thread: Non existent user error on restore
I'm using Postgresql 7.4.2 on RedHat 9. We backup a database weekly with the following command: pg_dump --clean --create --verbose --format=c \ --compress 9 -U admin $DBSID \ | dbdumpsplit $DBSID.dump where $DBSID is the database name. The database is very large, so we split the dump in 1GB chunks. Created a new database to hold a copy of the backup. Then issued cat $DBSID.dump* | pg_restore -d NEW_DB This errs with following message: pg_restore: [archiver (db)] could not execute query: ERROR: user "100" does not exist Issuing a \du does not list a user with name or id 100 on the backed-up database. Created a user with: createuser -i 100 dropme Run the restore again, but gave same error! Tried to drop the user: dropuser dropme and it returned an error saying that user dropme owned a database and could not be dropped. Please help me cause I'm really baffled with this odd behavior. -- Werner Bohl <wbohl@deepdata.com> Infutor de Costa Rica
Werner Bohl <wbohl@deepdata.com> writes: > pg_restore: [archiver (db)] could not execute query: ERROR: user "100" > does not exist I'd suggest doing a plain text schema-only dump (pg_dump -s) and looking through it for references to userid 100. You have presumably got some objects in the database that are owned by a now-gone user. Fixing their ownership would be the best long-term solution. > Created a user with: > createuser -i 100 dropme > Run the restore again, but gave same error! I think you'd actually need "createuser 100", ie, the name not the sysid is what's being complained of above. It might be prudent to give it sysid 100 as well, though. regards, tom lane