“没有为‘Sqlite’实现特征‘SupportsReturningClause’”

问题描述 投票:0回答:2

我正在尝试让柴油箱与 SQLite 一起使用,但脱离了入门指南,它似乎不适用于 sqlite。

该代码适用于 postgres 但不适用于 sqlite

  diesel::insert_into(schema::subscriptions::table)
      .values(&new_subscription)
      .get_result(&connection)
      .expect("Error saving new subscription")

错误

error[E0277]: the trait bound `Sqlite: SupportsReturningClause` is not satisfied
  --> src/responder.rs:41:12
   |
41 |           .get_result(&connection)
   |            ^^^^^^^^^^ the trait `SupportsReturningClause` is not implemented for `Sqlite`

我可以在文档中看到一些关于柴油退货条款的参考资料,但我不完全确定应该将其更改为什么才能使其正常工作。

sqlite rust rust-diesel
2个回答
8
投票

使用

execute
而不是
get_results
适用于 SQLite。但这不会返回查询结果,因此必须运行第二个查询才能获取更新的值。


0
投票

根据指南

在 SQLite 后端,可以使用功能标志 returned_clauses_for_sqlite_3_35 启用对 RETURNING 子句的支持。

确实,它适用于我的 Diesel 2.1.1 和 SQLite 3.39.5:

[dependencies]
diesel = { version = "2.1.1", features = ["sqlite", "returning_clauses_for_sqlite_3_35"] }
© www.soinside.com 2019 - 2024. All rights reserved.