我一直关注文档Heroku docs on the subject 并且经历了这个并尝试了对它所做的事情的变化
直接数据库到数据库副本
我确信文档是错误的,或者我有一些设置或错误(有管理员权限)。我还阅读了SO上的一些分散的东西,heroku CLI中关于如何执行此操作的命令已更改。
当我运行此命令时(使用我的heroku数据库的凭据)
heroku pg:copy sushi::ORANGE GREEN --app sushi-staging
确认消息后:
警告:破坏性行动 ▸此命令将从
中删除所有数据
并确认。然后我收到一条错误消息:
Heroku PostgreSQL数据库必须是源或目标
将数据从一个应用程序中的postgresql数据库复制到heroku上另一个应用程序中的postgresql数据库有什么正确的方法?
答案 0 :(得分:3)
执行此操作的正确方法是:
heroku pg:copy [app name to copy from]::[app DB name] [DB to copy to] --app [app name to copy to]
因此,如果要从应用程序“ sushi”上的数据库“ Orange”复制到应用程序“ sushi-staging”上的数据库“ Green”,则命令将是您所拥有的:
heroku pg:copy sushi::Orange Green --app sushi-staging
在大多数情况下,一个应用程序上只有一个数据库,并且名称不会是颜色。它将被命名为“ DATABASE_URL”。您可以在应用程序的配置变量中找到数据库名称。我只有一个数据库,所以我必须这样做:
heroku pg:copy sushi::DATABASE_URL DATABASE_URL --app sushi-staging
希望有帮助
答案 1 :(得分:2)
这些文件严重不明确。和heroku一起玩耍应该清楚明白。
heroku pg:copy ::DATABASE_URL -a ...
您实际上将数据库编写为to-database-url的字符串表示形式,但您使用环境变量名称DATABASE_URL
答案 2 :(得分:0)
我遇到了同样的问题,可以通过使用HEROKU_POSTGRESQL_TEAL_URL
而不是DATABASE_URL
来解决:
heroku pg:copy postgresql-rugged-XXXX postgresql-closed-XXX -a app-name
注意:这两个数据库都连接到同一应用程序(在我的情况下为
app-name
。
现在,您如何找到HEROKU_POSTGRESQL_TEAL_URL
?您可以在这里找到它:
答案 3 :(得分:0)
这对我有用:
heroku pg:copy [origin databasee URI] DATABASE_URL --app [app-name]
答案 4 :(得分:0)
对我有用的实际FULL命令DATABASE_URL
不能代替任何东西,
heroku pg:copy project1::DATABASE_URL project2::DATABASE_URL
heroku
自动填写环境变量。
答案 5 :(得分:0)
不幸的是复制对我不起作用所以我做了一个备份/恢复操作
% Reached end of topic one-to-many [0] at offset 185
a
custom
如果您运行下面的命令,它将显示来自源应用及其 ID 的可用备份
heroku pg:backups:capture --app [source-app]
使用
获取目标数据库网址heroku pg:backups --app=[source-app]
然后创建一个名为 DATABASE_URL 的环境变量并添加来自上述命令的信息
heroku config:get DATABASE_URL --app [destination-app]
最后是恢复命令。 (只需写入 DATABASE_URL,因为这将从我们之前创建的 env 变量中获取值)
export DATABASE_URL='postgres://…'
更新: 导出 SOURCE 和 DESTINATION 的 database_urls,您可以使用以下内容在应用程序之间进行复制
heroku pg:backups:restore [source-app]::[backup-id] DATABASE_URL --app [destination-app]
答案 6 :(得分:0)
如果您正在考虑将应用程序从一个 heroku 帐户转移到另一个帐户,则情况会有所不同。您可能想要“转让所有权”。这是可能的:
您必须确保接收新所有权的帐户具有信用卡详细信息(即原始帐户是否有应计费用)
确保您已将接收所有权的新帐户添加为原始所有者 heroku-account 中的“合作者”。这可以通过单击应用程序(在您的仪表板中),单击“访问”选项卡来完成。然后添加一个合作者,输入接收所有权的 heroku 帐户的电子邮件地址。
您也可以遵循本指南:https://devcenter.heroku.com/articles/transferring-apps