无法从转储导入到 heroku postgres 数据库

Can't import to heroku postgres database from dump

抱歉,如果它是重复的,但我试图在这里找到答案,但没有任何帮助。

所以我读过像 this and this 这样的 heroku 文章。我能够保存一个使用 pg:backups capture 命令创建的转储文件。将其上传到 s3 并尝试通过以下方式恢复它:

heroku pg:backups restore DATABASE 'https://s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump'

但这就是行不通!在控制台中记录:

Unknown database: https://s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump. Valid options are: DATABASE_URL, HEROKU_POSTGRESQL_SILVER_URL

尝试了列出的选项而不是 DATABASE,但结果相同。我也尝试过其他托管,但结果相同。我也试过从其他应用程序恢复它,像这样:

heroku pg:backups restore myapp::b001 HEROKU_POSTGRESQL_SILVER --app myapp-cedar

但是它用 Backup oncampus::b001 not found. 记录但是,命令 heroku pg:backups --app myapp 显示它存在。

=== Backups
ID    Backup Time                Status                              Size    Database
----  -------------------------  ----------------------------------  ------  --------
b001  2015-03-13 18:10:14 +0000  Finished 2015-03-13 18:10:22 +0000  9.71MB  ORANGE

不知道现在该怎么办。只是希望有人能帮助我。

命令参数的顺序很重要。在上面的第一个示例中,您有 heroku pg:backups restore DATABASE 'https://s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump',但该命令期望引用 FIRST 和数据库加载到第二个,这将给出 heroku pg:backups restore 'https://s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump' DATABASE。我认为在新的东西中 ID 可能比 URL 更受欢迎,但是只要 URL 可以访问,URL 就应该可以工作。希望对您有所帮助,否则请告诉我,我们可以试试其他东西。

准备两个sh文件如下
backup.sh

NOWDATE=`date +%Y-%m-%d`
BACKUPNAME=$NOWDATE.dump
export PGPASSWORD='<password>'
echo “Creating backup of database  to $BACKUPNAME”
/usr/bin/pg_dump --host <urhostname> --port 5432 --username "<user>" --role "<role>" --no-password  --format tar --blobs --verbose --file "./$BACKUPNAME" "dbname"
echo “Succesfully created database backup”
echo “Uploading backup to Amazon S3 bucket…”
s3cmd put $BACKUPNAME s3://path/to/$BACKUPNAME
echo “Successfully uploaded backup to S3″
echo “Deleting backup file…”
rm $BACKUPNAME
echo “Done”

restore.sh

NOWDATE=`date +%Y-%m-%d`
BACKUPNAME=$NOWDATE.dump
echo “downloading the file $BACKUPNAME”
s3cmd get s3://path/to/$BACKUPNAME
echo “Succesfully downloaded”
echo “Will restore it Please wait “
export PGPASSWORD='<password>'
pg_restore --host <host> --port 5432 --username "<user>" --dbname "<databasename>" --role "<role>" --no-password  --verbose "./$BACKUPNAME"
echo “restoring the file $BACKUPNAME”
echo “Deleting backup file…”
rm -r $BACKUPNAME

echo “Done”

您需要配置 s3cmd 凭据,希望对您有所帮助!

geemus 正确解决了 Danny Ocean 的问题。

顺序确实有影响,DATABASE_URL 放在最后而不是开头。

只想将 link 留给 this answer,我相信这可以帮助其他遇到类似问题的用户。