You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将jsonb数据模型迁移至Diesel 2.x版本?

在Diesel 2.x中定义JSONB映射类型的正确方式

Diesel 2.x重构了内部模块结构,原diesel::pg::types::sql_types模块已设为私有,因此需要调整JSONB类型的导入方式和自定义类型的派生写法,具体如下:

步骤1:调整导入路径

将原导入的diesel::pg::types::sql_types::Jsonb替换为顶层的diesel::sql_types::Jsonb,这是2.x版本中SQL类型的标准导入路径。

步骤2:更新派生宏属性

原#[sql_type = "Jsonb"]属性需要替换为#[diesel(sql_type = Jsonb)],这是Diesel 2.x中自定义类型映射数据库列的要求。

完整代码示例

use diesel::sql_types::Jsonb;
use diesel::{FromSqlRow, AsExpression};

#[derive(FromSqlRow, AsExpression, serde::Serialize, serde::Deserialize, Debug, Default)]
#[diesel(sql_type = Jsonb)]
pub struct ChannelTag {
    pub id: i32,
    pub name: String,
}

必要的Cargo特性配置

确保Cargo.toml中Diesel依赖启用了postgres、jsonb和serde_json特性,以支持PostgreSQL的JSONB类型及Serde序列化:

diesel = { version = "2.0.4", features = ["postgres", "jsonb", "serde_json"] }

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 20:48:18