我试图在Heroku上部署我的Django应用程序。我已经创建了一个Heroku Postgres数据库,我想从AWS S3将现有的PostgreSQL数据库导入其中。我跟着tutorial in the Heroku docs跟着信。我创建了一个Heroku Postgres数据库并将其提升为主数据库。我跟着Heroku's AWS S3 tutorial设置了所有配置变量,以便heroku可以访问我的S3存储桶。但是当我运行heroku pg:backups restore 'https://s3.amazonaws.com/<bucket name>/<database name>' DATABASE_URL
时,我收到一条错误消息,说“#34;发生了错误,您的备份还没有完成。&#34;
以下是heroku pg:backups info
的完整输出:
=== Backup info: r012
Database: BACKUP
Started: 2015-07-13 13:43:30 +0000
Finished: 2015-07-13 13:43:30 +0000
Status: Failed
Type: Manual
Backup Size: 0.00B
=== Backup Logs
2015-07-13 13:43:30 +0000: 2015/07/13 13:43:30 aborting: could not write to output stream: Expected HTTP Status 200, received: "403 Forbidden"
2015-07-13 13:43:30 +0000: pg_restore: [custom archiver] could not read from input file: end of file
2015-07-13 13:43:30 +0000: waiting for restore to complete
2015-07-13 13:43:30 +0000: restore done
2015-07-13 13:43:30 +0000: waiting for download to complete
2015-07-13 13:43:30 +0000: download done
当然,由于这是403错误,我认为我的身份验证有问题。我已经运行heroku config
并对所有配置变量进行了三重检查。 AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY和DATABASE_URL环境变量都是正确的,并且与我在AWS和Heroku Postgres GUI中看到的相匹配。
为什么我会看到此错误消息?
答案 0 :(得分:3)
好吧,我觉得愚蠢,但问题的原因是我忘了在我的AWS网址中添加“.dump”到文件名的末尾。
答案 1 :(得分:3)
同样的错误从AWS拉入Heroku
如果未在AWS存储桶内的转储文件上正确设置权限,Heroku有时会拒绝导入备份/转储文件。 (如果Heroku无法访问该文件,则无法上传该文件。)
您可以在操作&gt;下找到权限设置。单击属性按钮或单击该文件,然后单击按钮&#34;属性&#34;在右边。
一个简单的解决方法是暂时使转储文件公开,执行heroku还原,然后锁定或删除转储文件。
答案 2 :(得分:-1)
对于Windows用户;
heroku pg:backups:restore "https://s3.amazonaws.com/me/items/3H0q/mydb.dump" DATABASE_URL
根据官方文档,如果您正在使用Windows,请务必在远程网址周围使用双引号。 see official docs