1

문서 번호 here과 같이 PlaySlick을 사용하여 두 개의 데이터베이스를 구성하려고합니다. 아래의 코드에서 문제는 두 번째 데이터베이스를 구성 했는데도 db2 시도를 사용하려고 시도하면 db1 (db1의 테이블을 찾으려고 시도하고 테이블을 찾을 수 없다는 SQL 예외를 throw 함)로 리디렉션됩니다.주사를 사용하여 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" 

답변

1

먼저 나는 단지 불구하고, (이 도움이 HasDatabaseConfigProvider을 확장 할 말이 생각하지 않는다

내 시도 약간의 DB 구성으로, DB를 수동으로 가져 오는 중입니다.

그 외에도 분명히 좋습니다.

나는 바보 같은 질문을하고 싶습니다. 왜 처음에는 잘못된 데이터베이스에 연결되어 있다고 생각합니까? 내 눈먼 추측은 당신의 진화에 문제가있을 수 있다는 것입니다. (그것이 데이터베이스에 테이블을 가지고 있지 않은 이유입니다).

실제로이 테이블을 db로 (예 : db 명령 줄과 함께 사용하면) 확인할 수 있습니까?

+0

PlaySlick 샘플 응용 프로그램은'HasDatabaseConfigProvider'를 확장합니다, 대안은 무엇입니까? – ps0604

+0

그러나이 특성은 기본적으로 아무것도주지 않습니다. 소스 코드를 살펴보십시오. 최종 보호 된 값을 덮어 씁니다. dbConfig : DatabaseConfig [P] = dbConfigProvider.get [P]'(이 줄에서 이미 수행 한 것 :'val db1 = dbConfigProvider.get [JdbcProfile] .db'). 대답은 - 하나의 db를 사용하면 1 줄 또는 2 줄을 절약 할 수 있습니다. 귀하의 경우 이미이 선을 작성 했으므로 대체 선이 필요하지 않습니다 (어떤 것도 연장 할 필요가 없음). 하지만 문제와 관련이 있습니다 (관련성이 의심 스럽습니다). 데이터베이스에 테이블이 필요합니까? –

+0

난 그냥 다시이 테스트하고, 잘 작동, 당신 말이 맞아요. – ps0604