Оказва се, че трябва да предоставите изрично собственост върху всички обекти в базата данни на собственика след възстановяване. Собственикът не е суперпотребител. Не е достатъчно само да зададете собственика в момента на създаване на базата данни. Окончателното решение за миграцията е така:
на клиента:
pg_dump -f dump.sql -Ox database
на сървъра:
su postgres
dropdb database
createdb database -O user
psql database -f dump.sql
и след това да зададете привилегиите:
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;"
Обърнете внимание, че бихме могли да изпълним командата sql в psql конзолата, но тази форма лесно може да се вгради в скриптове и други подобни.