Slick 3.1 - 从 DBIOAction 打印 SQL(插入语句)

Posted

技术标签:

【中文标题】Slick 3.1 - 从 DBIOAction 打印 SQL(插入语句)【英文标题】:Slick 3.1 - Printing SQL from DBIOAction (insert statements) 【发布时间】:2016-01-12 12:23:13 【问题描述】:

在 Slick 3.1 中,随着新 API 的完全重新设计,在进行插入时似乎无法查看生成的 SQL 语句。

如果你有这样的事情

val action = DBIO.seq(
  SomeTables ++= Seq(TableData(1,"First"),TableData(2,"Second"))
)

您似乎实际上无法从action 中看到生成的 SQL。 result 方法实际上并不存在,如果您不使用DBIO.seqstatements 的变体将打印? 代替实际值,如果您使用的是DBIO.seq statements 方法实际上并不存在。

即使使用.transactionally.withPinnedSession 之类的方法,它似乎也没有什么不同(但我不知道这应该有什么帮助)。

从所有方法的观察来看,这似乎是不可能的?

【问题讨论】:

这里一样,试图找到一种从 DBIOAction 打印 sql 的方法,但没有运气。希望这里有人指出我们正确的方向。它打印“?”因为它默认为Prepared Statement? 你用的是什么数据库? 文档中有一个方法:slick.lightbend.com/doc/3.0.0/queries.html#querying 3.2 新增功能。然后添加到 log4j 这按预期工作。 【参考方案1】:

这不是 Slick 3.1 处理的,您可以查看 source code,但您可以在 Slick 3.2 版本中使用此功能。

如果您有更大的代码库并且在这种情况下无法升级到 3.2,您只需将 this commit 添加到 3.1 源代码,构建并使用它。确保导入提交所需的必要内容。

【讨论】:

以上是关于Slick 3.1 - 从 DBIOAction 打印 SQL(插入语句)的主要内容,如果未能解决你的问题,请参考以下文章

使用 Java+Scala+Slick2D 时“无法从给定的启动配置中找到主要方法”

浅谈Slick- Slick301:我的Slick开发项目设置

如何使用 Play with Scala 和 Slick 从数据库中获取记录

Slick - 使用动态 sortBy 编译

错误:slick.model.Table 不采用类型参数

无法使用 play-slick 1.0.1/slick 3.0 连接到 mysql 数据库:配置错误