你能在追随者数据库上运行 heroku 控制台吗?



我在heroku上部署了一个Ruby on rails应用程序,其中包含数据库和追随者数据库。

我通常会做"heroku run rails console"来查看数据,我想知道是否有一种方法可以在追随者数据库上做到这一点,这样我就不会意外地写入/删除东西。我知道这应该很简单,但我似乎找不到关于它的文档。

谢谢!

您可以从本地控制台执行此操作。只需启动它:

rails console

然后,您需要heroku上关注者数据库的连接信息。您可以从 https://postgres.heroku.com/databases/检索此内容。只需单击相关数据库并分配包含以下信息的哈希:

follower_db = {:adapter  => "postgresql",
 :host     => "myhost",
 :username => "myuser",
 :password => "mypass",
 :database => "somedatabase"}

现在从控制台连接到此远程数据库:

ActiveRecord::Base.establish_connection(follower_db)

现在,您在控制台中输入的任何查询都将在此数据库上运行。

这将使用来自 Heroku 应用程序中FOLLOWER_DATABASE_URL环境变量的关注者数据库凭据来启动直接连接到关注者而不是提升数据库的 Rails 控制台。通常,默认情况下,Rails 设置为从DATABASE_URL读取,这只是在控制台会话期间将其设置为不同的值。

heroku run 'DATABASE_URL=$FOLLOWER_DATABASE_URL rails console'

如果您担心意外删除内容,请使用沙盒标志运行控制台

heroku run console --sandbox --app app-name

会话结束时,您的更改将回滚。

控制台当然有它的位置,但是如果我想检查数据库中的数据,那么我宁愿直接查看它,而没有ActiveRecord等妨碍。我发现很多情况下,使用控制台需要您无论如何都要检查生成的 SQL,以确保没有范围(例如)滑入。

我建议您尝试养成使用SQL接口(也许是PgAdminIII)而不是控制台的习惯 - 如果您不想麻烦从客户端连接,Heroku数据剪辑甚至可以工作(尽管psql连接字符串是从数据库页面提供给您的)。

数据库追随者是 master 数据库的只读副本,它与 master 数据库数据保持同步。在 master 数据库中提交写入和其他数据修改时,更改将实时流式传输到关注者数据库。

来源 - https://devcenter.heroku.com/articles/heroku-postgres-follower-databases

最新更新