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 插入时获得正确的(数据库)架构的主要内容,如果未能解决你的问题,请参考以下文章

使用 Slick 3.0 在同一事务中进行多次插入

Slick 3.0 批量插入或更新(更新插入)

如何使用 Slick 在 Postgres 中将 json 对象插入到 jsonb 类型的列中

如何在 slick 中使用 sql""" 插值编写动态 SQL 查询

如何在 SLICK 中使用 SQL“LIKE”运算符

如何使用 slick 将 Blob 类型的列插入数据库?