【问题标题】:Elixir/Phoenix - Connect to external databaseElixir/Phoenix - 连接到外部数据库
【发布时间】:2019-11-14 22:31:10
【问题描述】:

我在 dev.exs 中连接了主数据库,它工作正常。但在我的项目中,我计划使用多个数据库。我知道在文件 dev.exs 中可以连接多个数据库,但这个选项不适合我。数据库连接将存储在主项目数据库中。我想知道:如何在不使用文件 dev.exs 的情况下使用 elixir 代码连接到不同的数据库?

【问题讨论】:

  • 我很难想象你在问什么。您是在问是否可以设置多个 Ecto 存储库,或者是否可以使用仅在运行时知道的配置动态连接到数据库?
  • 第二个。我想知道如何在运行时(即 Phoenix 服务器已经运行时)连接到新数据库

标签: phoenix-framework elixir


【解决方案1】:

您可以使用不同的连接选项启动多个 Repo 实例。

然后,使用Repo.put_dynamic_repo/1 函数告诉 Repo 哪些数据库应该用于当前进程中的查询。 (此函数的文档还告诉您如何启动更多相同的 repo)。

还有一个更深入地讨论这个话题的讨论文件:https://hexdocs.pm/ecto/replicas-and-dynamic-repositories.html

【讨论】:

  • 本质上,我需要连接到数据库,执行查询,然后断开连接。然后连接到另一个数据库,执行另一个查询并断开连接。我不需要在配置文件中为所有数据库指定设置。
  • 是的,在这种情况下,您可以动态启动一个 repo,使用 put_dynamic_query/1 然后执行您的查询。之后,使用Repo.stop 停止回购。
  • 第二个链接的这一部分看起来非常适合您的用例:hexdocs.pm/ecto/… 我喜欢Repo.with_dynamic_repo/2 的想法
猜你喜欢
  • 2021-02-26
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 2013-05-21
  • 1970-01-01
相关资源
最近更新 更多