Slick 2中的多个PostgreSQL数据库(相同服务器)访问

时间:2014-03-16 15:09:47

标签: mysql postgresql scala playframework slick

所以我有一个使用多个MySQL和PostgreSQL数据库的Scala / Play应用程序(在同一台服务器上),但是我遇到了PostgreSQL的问题。

这是配置:

db.postgres.driver=org.postgresql.Driver
db.postgres.url="jdbc:postgresql://localhost:5432/"
db.postgres.user=root
db.postgres.password=root

db.mysql.driver="com.mysql.jdbc.Driver"
db.mysql.url="jdbc:mysql://localhost"
db.mysql.user=root
db.mysql.pass=root

这个简单的方法适用于MySQL:

def test = DB("mysql").withDynSession {
    val rez = sql"""select * from dbName.test""".as[TestRow].list
    println(rez)
}

但与Postgres的方法完全相同

def test = DB("postgres").withDynSession {
    val rez = sql"""select * from dbName.test""".as[TestRow].list
    println(rez)
}

抛出错误:

org.postgresql.util.PSQLException: ERROR: relation "dbName.test" does not exist

为什么这些方法是相同的,但是MySQL示例有效,而PostgreSQL没有?

我的筹码:

  • Scala 2.10.3
  • 播放2.2.2
  • Slick 2.0
  • PostgreSQL 9.3.3
  • MySQL 5.6.16
  • Java 8

Postgresql JDBC驱动程序版本为9.3-1101-jdbc41

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。

我正在使用Slick 2.0,提升嵌入和PostgreSQL 9.3。

您必须在定义表时设置架构:

class Coffees(tag:Tag)   扩展Table [(String,Int,Double,Int,Int)](tag,Some(“MYSCHEMA”),“COFFEES”){

文档: http://slick.typesafe.com/doc/2.0.1/schemas.html

答案 1 :(得分:0)

这可能是区分大小写的问题。尝试引用名称并将模式添加到限定名称:sql"""select * from "dbName"."theSchema"."test""""这有用吗?