关于在迁移时的原始 sql 的一个提示 | 自述 |《diesel 中文文档》| rust 技术论坛-江南app体育官方入口
由于迁移是用原始sql编写的,所以它们可以包含您使用的数据库系统的特定功能。例如,上面的create table
语句使用 postgresql 的 serial
类型。如果要使用 sqlite,则需要使用integer
. 包含所有支持后端的修改示例。如果您使用 postgresql 以外的其他后端,请确保查看这些的示例。
如果您更喜欢基于rust代码生成迁移,则 diesel cli 工具在 diesel migration generate
命令上提供了一个额外的 --diff schema
,该命令允许基于当前模式定义和数据库生成迁移。要生成与显示的原始 sql 迁移等效的迁移,您需要
创建
schema.rs
文件写入如下内容:diesel::table! { posts (id) { id -> int4, title -> varchar, body -> text, published -> bool, } }
包含用于此宏的语法。 提供了用于定义相关列的sql端类型的文档。
运行
diesel migration generate --diff-schema create_posts
这将生成预填充相关sql的迁移的 up.sql
和 down.sql
文件。之后,您应该继续执行 diesel migration run
步骤.
在准备应用程序用于生产时,您可能希望在应用程序的初始化阶段运行迁移。您可能还希望将迁移脚本作为代码的一部分,以避免将开发环境复制进去。
包提供了 宏, 允许您在最终的二进制文件中嵌入迁移脚本。 一旦您的代码使用了它, 您只需在main
函数的开头包含 connection.run_pending_migrations(migrations)
,即可在每次应用程序启动时运行迁移。