如何使用 Yesod/Persistent 访问两个不同的数据库服务器?
Posted
技术标签:
【中文标题】如何使用 Yesod/Persistent 访问两个不同的数据库服务器?【英文标题】:How to access two different database servers with Yesod/Persistent? 【发布时间】:2017-07-21 21:06:21 【问题描述】:我正在使用 Yesod 和 Persistent 构建网站(我正在使用基本的 yesod mysql 脚手架)。
我需要访问主数据库,但 runDB
使用的其他数据库
默认连接参数和连接。有没有一种简单的方法来使用具有两个不同连接参数的 Persistent ?
【问题讨论】:
【参考方案1】:创建连接的函数(如runSqlite
)在IO
monad 中。这意味着您可以使用 liftIO
在 Yesod 应用程序中的 Handler
函数中调用它。您还可以立即对数据库运行查询,这非常简洁。
【讨论】:
【参考方案2】:查看脚手架代码,应该很容易定义另一个rundDB
访问另一个使用不同连接参数创建的池。这意味着还要修改Settings
以读取和存储额外的连接信息。
但是,主要问题之一是,需要根据要加载的数据类型记住要使用哪个连接(或 runDB
)。另一种解决方案是使用联合表。
MySql(或 MariaDB)允许创建连接到远程数据库的代理表。尽管它需要一些设置,但这样做的好处是在客户端安全且易于使用。
【讨论】:
以上是关于如何使用 Yesod/Persistent 访问两个不同的数据库服务器?的主要内容,如果未能解决你的问题,请参考以下文章