mysql - 无法使用柴油箱从 mysql 数据库加载结果

标签 mysql rust rust-cargo rust-diesel

使用 diesel crate 加载返回错误以便与 MySQL 数据库交互:

the trait bound `chart_models::Chart: diesel::Queryable<(diesel::sql_types::Integer, diesel::sql_types::Integer, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Integer, diesel::sql_types::Nullable<diesel::sql_types::Text>, diesel::sql_types::Text), _>` is not satisfied

the trait `diesel::Queryable<(diesel::sql_types::Integer, diesel::sql_types::Integer, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Integer, diesel::sql_types::Nullable<diesel::sql_types::Text>, diesel::sql_types::Text), _>` is not implemented for `chart_models::Chart`

note: required because of the requirements on the impl of `diesel::query_dsl::LoadQuery<_, chart_models::Chart>` for `diesel::query_builder::SelectStatement<schema::chart::table, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::expression::operators::Eq<schema::chart::columns::id, diesel::expression::bound::Bound<diesel::sql_types::Integer, i32>>>>`rustc(E0277)
chart_models.rs(33, 14): the trait `diesel::Queryable<(diesel::sql_types::Integer, diesel::sql_types::Integer, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Numeric, diesel::sql_types::Integer, diesel::sql_types::Nullable<diesel::sql_types::Text>, diesel::sql_types::Text), _>` is not implemented for `chart_models::Chart`

表架构:

table! {
    chart (id) {
        id -> Integer,
        types -> Integer,
        prices -> Decimal,
        time -> Nullable<Varchar>,
        date -> Varchar,
    }
}

chart_models.rs 文件:

use diesel;
use diesel::prelude::*;
use diesel::mysql::MysqlConnection;

use schema::chart;
use schema::chart::dsl::chart as all_chart;
use rust_decimal::Decimal;

pub struct Chart {
    pub id: i32,
    pub types: i32,
    pub prices: Decimal,
    pub time: String,
    pub date: String,
}

impl Chart {
    pub fn show(id: i32, conn: &MysqlConnection) -> Vec<Chart> {
        all_chart
            .find(id)
            .load::<Chart>(conn)
            .expect("Error loading chart infos")
    }

}

有人可以帮忙检测问题吗?

最佳答案

看起来您的 Charts 结构需要 Queryable 特征。

您可以像这样使用派生属性添加它:

#[derive(Queryable)]
pub struct Chart {
    pub id: i32,
    pub types: i32,
    pub prices: Decimal,
    pub time: String,
    pub date: String,
}

错误消息的重要部分是第二行:

the trait `diesel::Queryable<...(details of your struct)...> is not implemented for `chart_models::Chart`

关于mysql - 无法使用柴油箱从 mysql 数据库加载结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57011888/

相关文章:

mysql - 不明确的 `id` 字段

mysql - 在 mysql 中连接 4 个或更多表的更快查询

mysql - 使用当天的mysql创建CSV文件

rust - 当我没有对它进行任何更改时,是否可以避免重新编译它?

rust - 什么是 crate 属性,我应该在哪里添加它?

MYSQL 随着时间的推移打破大量数据的最佳方式?

rust - 如何可变地从 &&mut Foo 借用引用?

rust - 如何在 Rust 中编写共享行为而不在每个模块中重复相同的代码?

random - 如何获得一组随机数,其中单个数字仅出现一次?

rust-cargo - 在 Cargo 中禁用注册表更新