我将 Slick and Play 与 play-slick 插件一起使用,但我无法确定是否可以com.mysql.jdbc.ReplicationDriver
与它们一起使用。我想使用该驱动程序的主/从功能。仅使用 Slick 时,似乎就像将驱动程序作为参数传递给 " forUrl
" 方法一样简单,但 play-slick 创建其连接的方式不同。我已经通过源代码试图弄清楚发生了什么,但我发现是空的。有人知道这是否可以做到吗?
PS:这是我目前的配置:
db.default.url="jdbc:mysql:replication://master,slave/production?autoReconnectForPools=true&roundRobinLoadBalance=true&loadBalanceBlacklistTimeout=1000&readOnly=true"
db.default.driver=com.mysql.jdbc.ReplicationDriver
db.default.slickdriver=scala.slick.driver.MySQLDriver
db.default.user=root
db.default.password=""
当我查看 Slick 源代码时,它的驱动程序似乎只是定义了如何构造数据和查询,并且没有包含任何有关实际连接的内容,所以我假设我能够告诉 play-slick 使用该驱动程序来实现 slick和 JDBC 的复制驱动程序
更新:所以上面的配置实际上似乎使用了正确的驱动程序,问题是我需要申请Connection.readOnly(true)
发生的每个数据库操作,如here所述。我不确定 Play 如何管理其连接,有没有办法可以做到这一点?
更新 2所以我在播放框架的源代码中找到了它获取 JDBC 连接的位置,但我不确定如何向该进程添加任何内容。我是否必须分叉整个框架才能完成此任务,还是有更明智的方法来做到这一点?