簡體   English   中英

將數據從一個應用程序中的 postgresql 數據庫復制到 heroku 上另一個應用程序中的 postgresql 數據庫的正確方法是什么?

[英]What is the correct way to copy data from a postgresql database in one app to a postgresql database in another app on heroku?

我一直在關注關於這個主題的文檔Heroku docs並且已經經歷了這個並嘗試了它所說的做的變化

直接數據庫到數據庫副本

我確信文檔是錯誤的,或者我有一些設置或錯誤(確實有管理員訪問權限)。 我還閱讀了一些關於 SO 的零散內容,heroku CLI 中有關如何執行此操作的命令已更改。

當我運行此命令時(使用我的 heroku 數據庫的憑據)

heroku pg:copy sushi::ORANGE GREEN --app sushi-staging

在我確認消息后:

警告:破壞性操作 ▸ 此命令將從中刪除所有數據

並確認。 然后我收到一條錯誤消息:

Heroku PostgreSQL 數據庫必須是源或目標

將數據從一個應用程序中的 postgresql 數據庫復制到 heroku 上另一個應用程序中的 postgresql 數據庫的正確方法是什么?

正確的做法是:

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

希望有幫助

這在文檔中並不清楚。 和 heroku 合作的人應該清楚這一點。

heroku pg:copy ::DATABASE_URL -a ... 

您實際上將數據庫編寫為 to-database-url 的字符串表示形式,但您使用了環境變量名稱DATABASE_URL

這對我有用:

heroku pg:copy [origin databasee URI] DATABASE_URL --app [app-name]

我有同樣的問題,通過使用HEROKU_POSTGRESQL_TEAL_URL而不是DATABASE_URL解決了:

heroku pg:copy postgresql-rugged-XXXX postgresql-closed-XXX -a app-name

注意:這兩個數據庫在這里附加到同一個應用程序(在我的例子中是app-name )。

現在,您如何找到HEROKU_POSTGRESQL_TEAL_URL 你可以在這里找到它:

Heroku 附加組件

對我DATABASE_URL的實際 FULL 命令, DATABASE_URL不能替代任何東西,是:

heroku pg:copy project1::DATABASE_URL project2::DATABASE_URL

heroku自動填充環境變量。

不幸的是復制對我不起作用所以我做了一個備份/恢復操作

heroku pg:backups:capture --app [source-app]

如果您運行以下命令,它將顯示源應用程序及其 ID 中的可用備份

heroku pg:backups --app=[source-app]

使用獲取目標數據庫 URL

heroku config:get DATABASE_URL --app [destination-app]

然后創建一個名為 DATABASE_URL 的環境變量並添加來自上述命令的信息

export DATABASE_URL='postgres://…'

最后是恢復命令。 (只需寫入 DATABASE_URL 因為這將從我們之前創建的 env 變量中獲取值)

heroku pg:backups:restore [source-app]::[backup-id] DATABASE_URL --app [destination-app]

更新:為 SOURCE 和 DESTINATION 導出 database_urls,您可以使用以下內容在應用程序之間進行復制

heroku pg:copy [source-app]::SOURCE DESTINATION --app [destination-app]

如果您正在考慮將應用程序從一個 heroku 帳戶轉移到另一個帳戶,則情況會有所不同。 您可能想要“轉讓所有權”。 這是可能的:

  1. 您必須確保接收新所有權的帳戶具有信用卡詳細信息(即原始帳戶是否有應計費用)

  2. 確保您已將接收所有權的新帳戶添加為原始所有者 heroku-account 中的“合作者”。 這可以通過單擊應用程序(在您的儀表板中),單擊“訪問”選項卡來完成。 然后通過輸入接收所有權的 heroku 帳戶的電子郵件地址來添加合作者。

您也可以遵循本指南: https : //devcenter.heroku.com/articles/transferring-apps

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM