我有一个 ruby on rails 应用程序部署在 heroku 上,带有一个数据库和一个追随者数据库。
我通常会执行“heroku run rails console”来查看数据,我想知道是否有一种方法可以在关注者数据库上执行此操作,这样我就不会意外写入/删除内容。我知道这应该很简单,但我似乎找不到关于它的文档。
谢谢!
我有一个 ruby on rails 应用程序部署在 heroku 上,带有一个数据库和一个追随者数据库。
我通常会执行“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)而不是控制台的习惯——如果您不想麻烦从客户端连接(尽管 psql连接字符串是从数据库页面提供给您的)。
数据库追随者是主数据库的只读副本,它与主数据库数据保持同步。在主数据库中提交写入和其他数据修改时,更改会实时流式传输到从属数据库。
来源 - https://devcenter.heroku.com/articles/heroku-postgres-follower-databases