Slick Mtable.getTables выбирает имя базы данных

Моя конфигурация URL-адреса базы данных Scala/Play выглядит следующим образом:

db.default.url="jdbc:mysql://localhost"

Я не (не могу) выбрать базу данных, потому что использую несколько баз данных.

У меня есть метод, который извлекает данные из таблицы базы данных в виде карты пар имени столбца и значения:

def getSession(id: String, db: String): Map[String, Any] = DB.withSession {

    val columns = MTable.getTables(None, None, None, None).list.filter(_.name.name == "myTable").head.getColumns.list.map(_.column) 
    val result = sql"""SELECT * FROM #$db.myTable WHERE id=$id""".as[List[Any]].firstOption.map(columns zip _ toMap).get

}

MTable.getTables, похоже, не работает в этом случае, потому что я предполагаю, что он ожидает, что DB.withSession будет выбрана база данных, что не так. Как мне заставить это работать?


person Caballero    schedule 27.11.2013    source источник


Ответы (1)


Вам нужно определить несколько баз данных в Play, если вы хотите использовать несколько баз данных, например:

db.database1.url="jdbc:mysql://localhost/database1"
db.database2.url="jdbc:mysql://localhost/database2"
db.database3.url="jdbc:mysql://localhost/database3"

Затем вам нужно будет выполнить запрос для каждой отдельной базы данных и объединить результаты, например:

DB("database1").withSession { ... } ++ DB("database2").withSession { ... }

так далее...

person James Roper    schedule 28.11.2013