J'essaie de configurer deux bases de données à l'aide de PlaySlick tel que documenté here. Le problème dans le code ci-dessous est que même si j'ai configuré une deuxième base de données db2
toute tentative de l'utiliser redirige l'action vers db1
(essaie de trouver la table dans db1 et lève une exception SQL disant que la table est introuvable).Configuration de deux bases de données dans PlaySlick en utilisant l'injection
Comment configurer deux bases de données dans PlaySlick en utilisant l'injection?
C'est ma tentative:
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
Et les entrées de 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"
L'exemple d'application PlaySlick étend 'HasDatabaseConfigProvider', quelle est l'alternative? – ps0604
Mais ce trait ne donne pratiquement rien. Jetez un oeil au code source. Ce qu'il fait, il vous fournit essentiellement: 'override final protégé val dbConfig: DatabaseConfig [P] = dbConfigProvider.get [P]' (que vous avez déjà fait dans cette ligne: 'val db1 = dbConfigProvider.get [JdbcProfile] .db'). Donc, la réponse est - il vous permet d'économiser 1 ou 2 lignes lorsque vous utilisez un db. Dans votre cas, vous avez déjà créé cette ligne, donc aucune alternative nécessaire (ne nécessite pas d'étendre quoi que ce soit). Mais nous divergeons du problème (je doute que ce soit lié). Êtes-vous sûr d'avoir les tables requises dans les bases de données? –
Je viens de tester à nouveau, et cela a bien fonctionné, vous aviez raison – ps0604