我正在尝试使用PlaySlick配置两个数据库,如文档here所示。下面代码中的问题是,即使我配置了第二个数据库db2
,任何使用它的尝试都会将操作重定向到db1
(尝试在db1中查找表并抛出一个SQL异常,说明找不到表格。
如何使用注入在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"
答案 0 :(得分:1)
首先,我不认为扩展HasDatabaseConfigProvider
是有意义的(它有助于,但只有很少,使用单个数据库配置;您可以手动获取数据库)。
除此之外 - 它看起来绝对不错。
我宁愿问一个愚蠢的问题 - 为什么你认为它首先连接到错误的数据库? 我的盲目猜测是你的演变可能有问题(这就是你在数据库中没有表格的原因)。
你能否仔细检查一下你是否在db中实际拥有这些表(例如使用db命令行)?