Es stellt sich heraus, dass Sie dem Eigentümer nach der Wiederherstellung explizit das Eigentum an allen Objekten in der Datenbank erteilen sollten. Der Eigentümer ist kein Superuser. Es reicht nicht aus, den Eigentümer nur zum Zeitpunkt der Datenbankerstellung festzulegen. Die endgültige Lösung für die Migration sieht folgendermaßen aus:
auf dem Client:
pg_dump -f dump.sql -Ox database
auf dem Server:
su postgres
dropdb database
createdb database -O user
psql database -f dump.sql
und dann um die Privilegien festzulegen:
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;"
Beachten Sie, dass wir den sql-Befehl in der psql-Konsole hätten ausführen können, aber dieses Formular lässt sich leicht in Skripte und dergleichen einbetten.