【发布时间】:2013-11-18 21:38:42
【问题描述】:
我正在尝试学习 Slick,并且已经启动并运行了一个 Postgres 数据库。我做了一个小程序来测试它:
import scala.slick.driver.PostgresDriver.simple._
import Database.threadLocalSession
object Names extends Table[(String)]("names")
{
def name = column[String]("name", O.PrimaryKey)
def * = name
}
object DbTest
{
val db = Database.forURL("jdbc:postgresql://localhost:5432/names",
driver = "org.postgresql.Driver")
def main(args : Array[String]) =
{
print("Doing something... ")
db withTransaction
{
Query(Names) foreach
{
case (name) =>
println(name)
}
}
println("... done!")
}
}
问题是在print("Doing something... ") 之后发生任何事情大约需要 5 秒。如果我复制 db withTransaction 块,两个块在前 5 秒后快速连续执行。有什么想法吗?
【问题讨论】:
-
当你从命令行连接到 postgres 时,需要多长时间?因为我看不出有什么需要花那么长时间的。
-
几乎是即时的!
-
查询返回多少行?
-
只有一个 - “John Doe”。
-
好的,还有两个问题,您使用的是什么版本的 slick、scala 和可能的 postgresql 驱动程序?如果你在 linux 上,你可以尝试使用 url jdbc:postgresql:names 而不是 jdbc:postgresql://localhost:5432/names 连接吗?我不确定这是否也适用于 Windows。现在我回家了,我可以尝试一下,使用 scala 2.10.2 和 slick 1.0.1,你的代码对我来说只需要几分之一秒。
标签: postgresql scala slick