如何使用 Heroku 运行 pg_dumpall?

Geo*_*ett 2 database postgresql heroku heroku-postgres pg-dumpall

我如何pg_dumpall与 Heroku 一起使用?Heroku 的默认“数据库备份”功能只需pg_dump单击一个按钮,其中不包括角色,所以我想做pg_dumpall......我正在尝试pg_dumpall -h myherokuurl.compute-1.amazonaws.com -l mypassword -U myUser > dump.sql

我收到此错误:

pg_dumpall: error: query failed: ERROR:  permission denied for table pg_authid
pg_dumpall: error: query was: SELECT oid, rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolconnlimit, rolpassword, rolvaliduntil, rolreplication, rolbypassrls, pg_catalog.shobj_description(oid, 'pg_authid') as rolcomment, rolname = current_user AS is_current_user FROM pg_authid WHERE rolname !~ '^pg_' ORDER BY 2
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是创建一个具有正确权限的新用户。所以,我使用heroku pg:psql DATABASE -a my-app-name然后尝试登录create user myUser with password 'mypassword'但收到错误ERROR: permission denied to create role

老实说,我不确定发生了什么,我只是猜测。任何故障排除的想法将不胜感激!(与此同时,我只是想了解有关 Postgres 的更多信息)

F30*_*F30 6

如果您的问题只是与pg_authid目录有关,您应该能够使用选项的pg_dumpall最新--no-role-passwords 版本

这通常适用于pg_authid无法访问的托管环境,例如 AWS。唯一的缺点是 Postgres 用户的密码将从转储中丢失。

但是,您的环境似乎更加有限,也许是共享环境,您甚至无法创建新的 Postgres 用户。我不确定是否有机会pg_dumpall在那里工作。