与PostgreSQL一起使用时的光滑问题

Cri*_*riu 11 postgresql scala slick

我使用的是光滑的斯卡拉项目来查询一些表.

    //define table
object Addresses extends Table[Address]("assetxs.address") {
  def id = column[Int]("id", O.PrimaryKey)
  def street = column[String]("street")
  def number = column[String]("number")
  def zipcode = column[String]("zipcode")
  def country = column[String]("country")
  def * = id ~ street ~ number ~ zipcode ~ country <> (Address, Address.unapply _)
}
Run Code Online (Sandbox Code Playgroud)

如果我使用这个表的任何查询它不起作用(它说它找不到我的表)所以我更进一步打印出查询,如:

implicit val session = Database.forURL("jdbc:postgresql://localhost:5432/postgres", driver = "org.postgresql.Driver", user="postgres", password="postgres").createSession()
      session.withTransaction{
        val query = Query(Addresses)
        println("Addresses: " + query.selectStatement)
}
Run Code Online (Sandbox Code Playgroud)

我注意到schema.table的名称出现在,""所以语句是:

select x2."id", x2."street", x2."number", x2."zipcode", x2."country"
from "assetxs.address" x2
Run Code Online (Sandbox Code Playgroud)

这当然不起作用(我试图在PostgreSQL工具中运行它,我需要""表名中删除,以使其工作.

""在使用表名时,是否可以告诉我在任何查询中是否有任何光滑的选项?

Cri*_*riu 6

最后我能够解决这个问题.

我只指定表名:

object Addresses extends Table[Address]("address")

并且在搜索时更改我的postgresql conf以包含我的模式(看起来光滑public只在模式上查找):

search_path = '"$user",assetxs,public'

现在它的工作原理.


sze*_*ger 5

您已将架构放入表名中。包含点字符的(带引号的)表名在 SQL 中是有效的,但这不是您在这里想要的。您必须单独指定架构:

object Addresses extends Table[Address](Some("assetxs"), "address")
Run Code Online (Sandbox Code Playgroud)

  • 原始问题的新工作链接是 https://github.com/slick/slick/issues/19。忽略表定义中的模式名称是一个错误:https://github.com/slick/slick/issues/8。 (3认同)