1
我试图使用PlaySlick配置两个数据库,记录为here。在下面的代码中的问题是,即使我配置了第二个数据库db2
任何使用它的尝试都会将动作重定向到db1
(尝试在db1中查找表并引发SQL异常,表示未找到该表)。使用注入在PlaySlick中配置两个数据库
如何在PlaySlick中使用注入配置两个数据库?
这是我的尝试:
class ManageUsersDAO @Inject()(
@NamedDatabase("db1") protected val dbConfigProvider: DatabaseConfigProvider,
@NamedDatabase("db2") protected val dbConfigProvider2: DatabaseConfigProvider)
extends HasDatabaseConfigProvider[JdbcProfile] {
import driver.api._
val db1 = dbConfigProvider.get[JdbcProfile].db
val db2 = dbConfigProvider2.get[JdbcProfile].db
而且application.conf条目:
slick.dbs.db1.driver = "slick.driver.MySQLDriver$"
slick.dbs.db1.db.driver = "com.mysql.jdbc.Driver"
slick.dbs.db1.db.url = "jdbc:mysql://localhost:3306/db1"
slick.dbs.db1.db.user = "root"
slick.dbs.db1.db.password = "db1"
slick.dbs.db2.driver = "slick.driver.MySQLDriver$"
slick.dbs.db2.db.driver = "com.mysql.jdbc.Driver"
slick.dbs.db2.db.url = "jdbc:mysql://localhost:3306/db2"
slick.dbs.db2.db.user = "root"
slick.dbs.db2.db.password = "db2"
PlaySlick示例应用程序扩展了'HasDatabaseConfigProvider',有什么选择? – ps0604
但是这个特质并没有给出任何基本的东西。看看源代码。它的作用基本上为你提供:'覆盖最终保护的val dbConfig:DatabaseConfig [P] = dbConfigProvider.get [P]'(你已经在这一行做过:'val db1 = dbConfigProvider.get [JdbcProfile] .db' )。 所以答案是 - 当你使用一个数据库时,它可以节省1或2行。在你的情况下,你已经创建了这条线,所以没有其他选择需要(不需要扩展任何东西)。 但我们不同意这个问题(我怀疑它是相关的)。你确定你在数据库中需要表吗? –
我只是再次测试这个,它运作良好,你是对的 – ps0604