如何在Heroku将生产数据库中的数据转移到暂存数据库?该问题涉及IT技术。

6

我试图将生产数据库中的数据转移到暂存数据库,但没有成功。

我正在遵循Heroku文档上的说明:http://devcenter.heroku.com/articles/pgbackups#transfers

这些是我运行的命令...

$ heroku addons:add pgbackups --remote staging
$ heroku addons:add pgbackups --remote production
$ heroku pgbackups:capture --remote production
$ heroku pgbackups:restore DATABASE `heroku pgbackups:url --remote production` --remote staging

我收到的消息如下:

Usage: heroku pgbackups:restore [<DATABASE> [BACKUP_ID|BACKUP_URL]]

restore a backup to a database

if no DATABASE is specified, defaults to DATABASE_URL and latest backup
if DATABASE is specified, but no BACKUP_ID, defaults to latest backup

看起来我拼错了什么东西,但我想不出来是什么。

我也尝试使用应用程序的名称而不是远程命令执行相同的命令...

$ heroku pgbackups:restore DATABASE `heroku pgbackups:url --app myapp` --app myapp-staging

但是我并没有实际的转移,却收到了相同的消息。

非常感谢您的帮助。

2个回答

11

我认为你没有正确理解。永远使用--app而不是--remote

$ heroku pgbackups:capture --app myapp
$ heroku pgbackups:restore DATABASE `heroku pgbackups:url --app myapp` --app myapp-staging

谢谢Neil。我刚试了一下,但是出现了“!资源未找到”的错误。我还运行了“heroku pgbackups --app myapp”,它正确地显示了我的备份,所以资源是存在的,只是没有加载它。 - rebagliatte
当您使用错误的应用程序名称时,通常会返回“找不到资源”的错误 - 这些应该与Heroku网站上的myapps页面上列出的名称相同。尼尔的命令完全正确,因为我刚刚自己使用了它。 - John Beynon
谢谢John,我发誓我使用的是正确的名称。我刚刚双重检查了运行heroku apps - rebagliatte
你确定你正在以正确的用户身份进行应用程序认证吗?我有几个帐户,这总是让我感到困惑... - Neil Middleton
你应该尝试使用 https://github.com/ddollar/heroku-accounts - 它可以让处理多个账户和 Heroku 变得更加轻松! - John Beynon

4

不确定自去年1月份以来Heroku是否有所改变,但是当我运行以下命令时

heroku pgbackups:restore DATABASE `heroku pgbackups:url --app myapp` --app myapp-staging

我一直收到一个错误消息,只有:

"!备份未找到"

尽管当我单独运行命令以获取URL时:

heroku pgbackups:url --app myapp

然后我在浏览器中尝试了一下这个URL,发现它是正确的。

因此,我只是尝试将复制/粘贴的URL发送到命令中,如下所示:

heroku pgbackups:restore DATABASE "http://urlgoeshere" --app myapp-staging

我需要在URL周围使用双引号而不是单引号。否则我会收到以下错误信息:
“文件名、目录名或卷标语法不正确。'Expires'不被识别为内部或外部命令、可执行程序或批处理文件。'Signature'不被识别为内部或外部命令、可执行程序或批处理文件。”

我也遇到了同样的问题,按照Gayle所说将URL粘贴过去对我有用。 - Charles Worthington
有人在我们的开发中心上评论说他们遇到了同样的问题,但我无法复制这个问题。如果您仍然看到此问题,请告诉我您看到了什么错误(如果不止于上面的“!备份未找到”),在运行set -x之前会发生什么(运行set +x以再次关闭回显),以及您正在使用哪个shell和操作系统(我使用的是Heroku Postgres)。 - uhoh-itsmaciek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接