问题描述
如何将i64
/ u64
与柴油一起使用?
我真的需要为原始类型实现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)
解决方法
i64
corresponds to BigInt
和i32
corresponds to Integer
。更改架构以使用BigInt
,或将数字更改为i32
。