2

我正在使用带有普通查询的 Scala 2.10 和Slick 2.10-1.0.1。

我尝试使用 Tomcat 在localhost. 对于查询评估,我在 port 上使用 PostgreSQL 5432

当我尝试编译时,我收到以下错误消息:

ERROR org.quartz.core.JobRunShell - Job DEFAULT.MissionLifecycleManager threw an unhandled Exception: org.postgresql.util.PSQLException: ERROR: improper qualified name (too many dotted names)
  Position: 16
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102) ~[postgresql-9.1-901.jdbc4.jar:na]
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835) ~[postgresql-9.1-901.jdbc4.jar:na]
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) ~[postgresql-9.1-901.jdbc4.jar:na]
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500) ~[postgresql-9.1-901.jdbc4.jar:na]
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388) ~[postgresql-9.1-901.jdbc4.jar:na]
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:381) ~[postgresql-9.1-901.jdbc4.jar:na]
at scala.slick.jdbc.StatementInvoker.results(StatementInvoker.scala:34) ~[slick_2.10-1.0.1.jar:1.0.1]
at scala.slick.jdbc.StatementInvoker.elementsTo(StatementInvoker.scala:17) ~[slick_2.10-1.0.1.jar:1.0.1]
....

这是我的初始化代码:

import com.weiglewilczek.slf4s.Logging
import scala.slick.driver.PostgresDriver._
import scala.slick.session.Database
import Database.threadLocalSession
import scala.slick.jdbc.{GetResult, StaticQuery => Q}
import scala.slick.driver.PostgresDriver.simple._

object SQLUtilities extends Logging with ServiceInjector {
    lazy val db = init()

    private def init() = {
        info("Connecting to postgres database at localhost") //writes in a log file

        val qe = Database.forURL("jdbc:postgresql://localhost:5432", "user", "pass", driver = "org.postgresql.Driver")
        info("Connected to database")
        qe
    }
}

显然,出了点问题。所以我认为,我的数据库初始化不正确。我忘记了一些参数吗?我的参数完全正确吗?

另一个 - 不是那么致命 - 问题:如果我有一个主体,我想在方法的开头和结尾记录一些东西 - 让我们说总是相同的日志消息,但不同的主体 - 作为我开始和离开了这个方法......有没有比这里的例子更合适的方法来做到这一点init()

4

1 回答 1

3

在连接字符串“jdbc:postgresql://localhost:5432/somedatabase”中指定一个数据库。

http://jdbc.postgresql.org/documentation/head/connect.html

于 2013-11-14T13:32:25.823 回答