Si scopre che è necessario concedere la proprietà esplicita di tutti gli oggetti nel database al proprietario dopo il ripristino. Il proprietario non è un superutente. Non è sufficiente impostare il proprietario solo al momento della creazione del database. La soluzione finale per la migrazione è questa:
sul cliente:
pg_dump -f dump.sql -Ox database
sul server:
su postgres
dropdb database
createdb database -O user
psql database -f dump.sql
e poi per impostare i privilegi:
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;"
Nota che avremmo potuto eseguire il comando sql nella console psql, ma questo modulo è facilmente integrabile in script e simili.