Det visar sig att du bör ge explicit äganderätt till alla objekt i databasen till ägaren efter återställning. Ägaren är inte en superanvändare. Det räcker inte att bara ställa in ägaren när databasen skapas. Den slutliga lösningen för migrering ser ut så här:
på klienten:
pg_dump -f dump.sql -Ox database
på servern:
su postgres
dropdb database
createdb database -O user
psql database -f dump.sql
och sedan för att ställa in privilegierna:
psql database -c "GRANT ALL ON ALL TABLES IN SCHEMA public to user;"
psql database -c "GRANT ALL ON ALL SEQUENCES IN SCHEMA public to user;"
psql database -c "GRANT ALL ON ALL FUNCTIONS IN SCHEMA public to user;"
Observera att vi kunde ha kört kommandot sql i psql-konsolen men det här formuläret är lätt att bädda in i skript och sådant.