3

我正在尝试使用此处记录的 PlaySlick 配置两个数据库。下面代码中的问题是,即使我配置了第二个数据库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"
4

1 回答 1

1

首先,我认为扩展没有意义HasDatabaseConfigProvider(它对单个 db 配置有帮助,尽管只有很小的帮助;无论哪种方式,您都可以手动获取 db)。

除此之外 - 它看起来绝对不错。

我宁愿问一个愚蠢的问题——你为什么认为它首先连接到错误的数据库?我的盲目猜测是你的进化可能有问题(这就是你的数据库中没有表的原因)。

你能仔细检查一下你是否真的在 db 中有这个表(例如使用 db 命令行)?

于 2016-12-05T10:36:34.170 回答