3

我从 Rust 中的柴油和火箭开始,在将浮动值插入数据库时​​遇到了问题。我的结构看起来像:

#[derive(Serialize, Deserialize, Insertable)]
#[table_name = "database"]
pub struct New_Data{
    pub data1: f64,
    pub data2: f64,
    pub data3: f64,
}

我得到这个错误:特征绑定f64: diesel::Expression不满足标签:特征diesel::Expression没有实现f64,注意:需要因为对 impl 的diesel::expression::AsExpression<diesel::sql_types::Numeric>要求f64

我读过柴油有点使用它自己的数据/SQL 类型,但我不知道如何声明一个浮点数。我还尝试使用带有类似错误消息的diesel::sql_types::Float。

4

1 回答 1

4

这看起来像是在柴油自动生成中定义的字段模式类型与schema.rs您在 中定义的字段类型不匹配New_Data。查看自动生成的模式中的data1 ->定义,您可能会发现类似的内容:

data1 -> Float4

在这种情况下,字段的类型需要是f32。否则,如果是Float8,那么类型应该是f64。这种柴油模式类型语言之间的映射进一步扩展到 Option 和 Nullable。如果它出现Nullable<Float4>在模式中,那么它应该Option<f32>在类型中。

于 2020-04-04T17:52:42.417 回答