Slick 3 - 如何在使用纯 SQL 插入时获得正确的(数据库)架构

Posted

技术标签:

【中文标题】Slick 3 - 如何在使用纯 SQL 插入时获得正确的(数据库)架构【英文标题】:Slick 3 - how to get correct (database) schema when inserting with plain SQL 【发布时间】:2021-12-17 04:44:32 【问题描述】:

我试图让基本的普通 SQL 示例在 Slick 3 中工作,在 Postgres 上但使用自定义 DB 模式,比如 local 而不是默认的 public 之一。我很难在执行以下操作时插入行

sqlu"INSERT INTO schedule(user_id, product_code, run_at)  VALUES ($userId, $code, $nextRun)"

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

该表已就位,因为当我在插入语句中为 schedule 加上 local. 前缀时,它按预期工作。如何获得为此查询提供的正确架构?

我将它用作 akka-projection 处理程序的一部分,并且所有投影内部结构(如维护偏移量)在 local 架构上按预期工作。

我不能简单地将schema 作为变量,因为它在解析参数时出错:

sqlu"INSERT INTO $schema.schedule(user_id, product_code, run_at)  VALUES ($userId, $code, $nextRun)"

【问题讨论】:

在 JDBC 连接级别怎么样? ***.com/questions/4168689/… 废话,配置太多。没有在这个确切的地方指定架构。所以不是真的,但感谢你指出我正确的方向 【参考方案1】:

您可以使用#$value 插入架构名称:

sqlu"INSERT INTO #$schema.table ..."

【讨论】:

谢谢,不知道那个语法。但问题是我的配置有些混乱,架构配置不正确。

以上是关于Slick 3 - 如何在使用纯 SQL 插入时获得正确的(数据库)架构的主要内容,如果未能解决你的问题,请参考以下文章