在Heroku上将数据从一个应用程序中的Postgresql数据库复制到另一个应用程序中的Postgresql数据库的正确方法是什么?

Dan*_*Dan 6 postgresql heroku

我一直在关注有关此主题的文档Heroku文档, 并经历了这一过程,并尝试对其说做的内容做一些改动

直接数据库到数据库副本

我确信文档是错误的,或者我的设置或设置有误(确实具有管理员权限)。我还阅读了一些分散的内容,说明heroku CLI中的命令已更改。

当我运行此命令时(使用我的heroku DB的凭据)

heroku pg:copy sushi::ORANGE GREEN --app sushi-staging
Run Code Online (Sandbox Code Playgroud)

在我确认消息后:

警告:破坏性行为?此命令将从中删除所有数据

并确认。然后我得到一个错误,说:

Heroku PostgreSQL数据库必须是源数据库或目标数据库

将数据从一个应用程序中的postgresql数据库复制到heroku上另一应用程序中的postgresql数据库的正确方法是什么?

Kui*_*ken 8

正确的方法是:

heroku pg:copy [app name to copy from]::[app DB name] [DB to copy to] --app [app name to copy to]
Run Code Online (Sandbox Code Playgroud)

因此,如果您想从应用程序 'sushi' 上的数据库 'Orange' 复制到应用程序 'sushi-staging' 上的数据库 'Green',则命令将是您所拥有的:

heroku pg:copy sushi::Orange Green --app sushi-staging
Run Code Online (Sandbox Code Playgroud)

大多数情况下,一个应用程序上只有一个数据库,名称不会是一种颜色。它将被命名为“DATABASE_URL”。您可以在应用程序的配置变量中找到您的数据库名称。我只有一个数据库,所以我必须这样做:

heroku pg:copy sushi::DATABASE_URL DATABASE_URL --app sushi-staging
Run Code Online (Sandbox Code Playgroud)

希望有帮助


Dan*_*Dan 5

文档中并不清楚这一点。Heroku 的某人应该澄清这一点。

heroku pg:copy ::DATABASE_URL -a ... 
Run Code Online (Sandbox Code Playgroud)

您实际上将数据库编写为 to-database-url 的字符串表示形式,但使用环境变量名称DATABASE_URL

  • 您将 DATABASE_URL 定义为环境变量,然后将其设置为heroku 数据库的路径。然后,您从字面上包含 DATABASE_URL,命令 heroku pg:copy ::DATABASE_URL -a 将自动映射到定义的环境变量。 (2认同)