我想以声明方式编写表模式,例如
但是,据我所知,Diesel 需要像下面这样的手写迁移 DDL。
-- up.sql
CREATE TABLE members (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
-- down.sql
DROP TABLE members;
它有点复杂,因为它是有状态的。Diesel 提供的模式是一种声明式的编写方式吗?
或者有没有好的外部工具?
我发现 Prisma 可以从以自己的语法编写的声明式架构生成与 up.sql 等效的 DDL。
但是我找不到生成down.sql的方法
https://www.prisma.io/docs/concepts/components/prisma-migrate
最佳答案
如果我理解正确,您正在寻找一种方法来保持 Rust 实体和数据库模式同步,而无需编写任何 SQL(这基本上是像 EFCore 或 GORM 这样的常规 orm 会提供的)。
如果这就是您所需要的,恐怕柴油不会满足您的要求。
有这个看起来不错的图书馆https://github.com/rust-db/barrel ,它为您提供了一种使用 Rust 而不是 SQL 编写迁移的方法,有点像 EFCore。
柴油还提供 embed_migrations!
宏,您可以使用它来在不使用 cli 的情况下自动运行迁移。
然而,虽然所有这些工具都可以帮助您自动化数据库迁移,但您仍然必须手动编写它们。
关于mysql - 使用 Diesel 的声明式架构定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67585782/