【问题标题】:Use derive Insertable for float使用派生可插入的浮点数
【发布时间】:2020-07-16 18:44:13
【问题描述】:

我开始使用 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 实现, 注意:由于diesel::expression::AsExpression<diesel::sql_types::Numeric>f64 的impl 有要求,所以需要

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

【问题讨论】:

标签: sql rust rust-diesel


【解决方案1】:

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

data1 -> Float4

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

【讨论】:

  • 啊,明白了。我的错误是在迁移 up.sql 中。我把错误的类型放在那里。谢谢提示
  • @Jojo - 你能与浮动列分享你的 CREATE TABLE sql 吗?我用FLOATDOUBLE甚至DECIMAL尝试了各种尝试,但都失败了。
猜你喜欢
  • 2023-01-07
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
相关资源
最近更新 更多