Diesel migration force String而不是schema.rs中的Uuid &g



我有一个问题与柴油迁移。我需要实现Uuid作为模型的主键。我在Uuid集成(功能uidv07, Uuid crate,…)方面遇到了很多问题,但是当我在迁移中指定Uuid类型时,柴油生成一个"Varchar"字段,所以我不能在我的模型中使用Uuid作为字段的类型。

users.sql

CREATE TABLE users (
id UUID PRIMARY KEY,
email VARCHAR NOT NULL,
name VARCHAR NOT NULL,
password VARCHAR NOT NULL,
id_role INT,
CONSTRAINT fk_role
FOREIGN KEY(id_role)
REFERENCES roles(id)
)

schema.rs


table! {
users (id) {
id -> Varchar,
email -> Varchar,
name -> Varchar,
password -> Varchar,
id_role -> Nullable<Int4>,
}
}

使用Varchar而不使用Uuid是否正常?

uuid = { version = "0.8.2", features = ["serde", "v4"] }
diesel = { version = "1.4.5", features = ["postgres", "r2d2", "uuidv07"] }

谢谢。

Diesel不会强迫你做任何事情。它只是从数据库系统中读取类型。因此,如果它输出Varchar作为特定列的类型,则意味着数据库系统将Varchar(无论出于何种原因)记录为该列的类型。或者换一种说法:这里的问题不是柴油,而可能是迁移、现有数据库模式和数据库之间的交互。由于您的问题中既没有提供有关您已有的数据库模式的信息,也没有提供有关您的数据库系统的信息,因此我在这里没有太多可以补充的内容来为您指明正确的方向。