【问题标题】:How connect deployed rails app to exist Heroku database如何将已部署的 Rails 应用程序连接到现有 Heroku 数据库
【发布时间】:2019-07-25 11:29:11
【问题描述】:

我在 Heroku 上启动了我的 Rails 应用程序。 我想将它连接到我朋友的现有项目的数据库,该项目也部署在 Heroku 上。一位朋友给了我数据库的凭据和 url。但是,我不明白如何将我的项目连接到我朋友的数据库。我试图改变DABASE _URL,但一切都没用。此外,凭证数据被放置在 database.yml 中,当我在 heroku 终端中运行 heroku run db:setup 时,我得到了

FATAL: permission denied for database "postgres" DETAIL: User does not have CONNECT privilege. Couldn't create '*************' database. Please check your configuration. rake aborted! PG::ConnectionBad: FATAL: permission denied for database "postgres" DETAIL: User does not have CONNECT privilege

【问题讨论】:

  • 无需在 database.yml 中添加凭据。您只需要更新 Config Vars 下的 DATABASE_URL。 heroku 不允许运行 db:setup 命令。

标签: ruby-on-rails postgresql heroku credentials


【解决方案1】:

使用以下步骤:

1)在settings/Config Vars下添加DATABASE_URL(完整的url用户名、密码、主机)。

2) 对于 Rails 应用程序,您应该使用db:schema:load, db:structure:loaddb:migrate 而不是db:setup

这里是关于问题https://help.heroku.com/63D7ALXT/why-am-i-seeing-user-does-not-have-connect-privilege-error-with-heroku-postgres-on-review-apps的更多信息

您可以使用 heroku addons:attach 命令在多个应用程序之间共享单个 Heroku Postgres 数据库

heroku addons:attach my-originating-app::DATABASE --app new_app

更多信息请点击此处https://devcenter.heroku.com/articles/heroku-postgresql#sharing-heroku-postgres-between-applications

希望对你有帮助

【讨论】:

  • 无法更新项目:无法覆盖附件值 DATABASE_URL
  • 请解释一下:“my-originating-app::DATABASE”和“new_app”是什么意思。我应该覆盖哪个应用而不是
【解决方案2】:

您无法更新DATABASE_URL 的原因是它当前指向另一个没有任何辅助附件的数据库。这是一种安全机制,可防止用户意外射中自己的脚。这应该允许您进行更改。

  1. heroku addons:attach <addon name, eg postgresql-cloudy-12345> --as ORIGINAL_DB --app <app name>
    • 这将创建一个额外的附件名称,这样您就不会丢失对原始数据库的引用
  2. heroku addons:detach DATABASE_URL --app <app name>
    • 这将删除 Heroku 管理的 DATABASE_URL 配置变量。
  3. heroku config:set DATABASE_URL=<the connection string for the other database> --app <app name>
    • 这会将DATABASE_URL 设置为指向应将事物置于可操作状态的另一个数据库。*

* 这里需要注意的是,这是一个脆弱的配置,因为数据库的主机名可能会改变。如果数据库进行维护,您将需要手动更改配置变量(即重复步骤 3)。

【讨论】:

    【解决方案3】:

    我通过访问 heroku.com 到我的应用程序然后设置然后 Config Vars 解决了这种情况 DATABASE_URL 与 ORIGINAL_DB_URL 不同,因此我将 DATABASE_URL 更改为类似于 ORIGINAL_DB_URL 就我而言:postgres://quxhxkemlsfzzv:964c7..........

    【讨论】:

      猜你喜欢
      • 2013-05-31
      • 1970-01-01
      • 2019-02-05
      • 2019-04-07
      • 2016-06-02
      • 1970-01-01
      • 2015-12-25
      • 2018-03-31
      • 2015-01-28
      相关资源
      最近更新 更多