Heroku数据库部署

时间:2017-09-14 15:28:14

标签: heroku

我正在尝试我的第一次Heroku部署并遇到问题

heroku pg:backups:restore "https://s3.us-east-2.amazonaws.com/myusername/POSTGRESQL.dump" 
                          DATABASE_URL --app MyAppName

我收到错误

 !    An error occurred and the backup did not finish.
 !
 !    pg_restore: [archiver] did not find magic string in file header
 !    pg_restore finished with errors
 !    waiting for download to complete
 !    download finished with errors
 !    please check the source URL and ensure it is publicly accessible
 !
 !    Run heroku pg:backups:info r006 for more details.

有时错误是:

Starting restore of https://s3.us-east-2.amazonaws.com/talXXXXXXXX to postgresql-XXXXXXXXX... done

Use Ctrl-C at any time to stop monitoring progress; the ba
Use heroku pg:backups to check progress.
Stop a running restore with heroku pg:backups:cancel.

Restoring... !
 !    An error occurred and the backup did not finish.
 !
 !    waiting for restore to complete
 !    pg_restore finished with errors
 !    waiting for download to complete
 !    download finished with errors
 !    please check the source URL and ensure it is publicl
 !
 !    Run heroku pg:backups:info r015 for more details.

我已经从各种浏览器确认公众可以访问该网址,我可以下载该文件。我在Windows上推荐使用双引号,我做错了什么?

4 个答案:

答案 0 :(得分:2)

最后,我无法知道如何导入Heroku,因为他们做广告可以在https://devcenter.heroku.com/articles/heroku-postgres-import-export#import

完成

所以我使用了像DBeaver这样的数据库连接客户端,将我的数据库转储转换为SQL脚本并手动运行脚本以导入数据。

:(

答案 1 :(得分:1)

我遇到了同样的问题。原来这是我的转储文件的问题。我没有正确地压缩它。

--format=c选择自定义作为格式输出(与-Fc相同)。它默认压缩文件,但它不够,所以我也使用了--compress标志。

此标志指示压缩级别;它从0(较轻)到9(较重)。

我使用了9,以防万一,我的命令就像那样

pg_dump --format=c --compress=9 --no-acl --no-owner -h THE_HOST -U YOUR_USER THE_DATABASE > YOUR_FILE.dump

它有效。

答案 2 :(得分:0)

我能够通过PgAdmin4创建备份,而不是通过Heroku官方教程中的console dump命令来实现这一点。

答案 3 :(得分:0)

我也只能通过 PgAdmin 来完成这项工作,这是 PgAdmin 中备份作业使用的命令行。 Windows 10 但 pg_dump 选项应该适用于任何操作系统。

C:\Program Files\PostgreSQL\13\bin\pg_dump.exe --file "mydump.dump" --host "localhost" --port "5432" --username "postgres" --no-password --verbose --format=c --blobs --compress "8" --no-owner --section=pre-data --section=data --section=post-data --no-privileges --no-tablespaces --no-unlogged-table-data --no-comments "mydatabase"

然后我将它上传到一个公共 Azure blob 文件并像这样恢复它:

heroku pg:backups:restore "https://redacted.blob.core.windows.net/piis2/mydump.dump" DATABASE_URL