如何使用 Diesel 将 i64 与 Insertable 一起使用
Posted
技术标签:
【中文标题】如何使用 Diesel 将 i64 与 Insertable 一起使用【英文标题】:How to use i64 with Insertable using Diesel 【发布时间】:2020-12-30 01:44:46 【问题描述】:如何将i64
/u64
与 Diesel 一起使用?
我真的需要为原始类型实现 diesel::Expression
特征吗?
这是我的代码。
Cargo.toml
:
[dependencies]
...
diesel = version = "1.4.5", features = ["sqlite", "numeric"]
migration/up.sql
:
CREATE TABLE books (
id INTEGER NOT NULL PRIMARY KEY,
size INTEGER NOT NULL
);
schema.rs
:
table!
books (id)
id -> Integer,
size -> Integer,
来源:
use crate::schema::books;
#[derive(Insertable, Queryable)]
#[table_name="books"]
pub struct BookRecord
pub id: Id,
pub size: i64,
这会产生以下错误:
error[E0277]: the trait bound `i64: diesel::Expression` is not satisfied
--> src/lib/models/book.rs:4:10
|
4 | #[derive(Insertable, Queryable)]
| ^^^^^^^^^^ the trait `diesel::Expression` is not implemented for `i64`
|
= note: required because of the requirements on the impl of `diesel::expression::AsExpression<diesel::sql_types::Integer>` for `i64`
= note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)
如何解决此错误?
【问题讨论】:
【参考方案1】:i64
corresponds to BigInt
和 i32
corresponds to Integer
。将您的架构更改为使用BigInt
,或将您的号码更改为i32
。
【讨论】:
以上是关于如何使用 Diesel 将 i64 与 Insertable 一起使用的主要内容,如果未能解决你的问题,请参考以下文章