关于在迁移时的原始 SQL 的一个提示
由于迁移是用原始SQL编写的,所以它们可以包含您使用的数据库系统的特定功能。例如,上面的CREATE TABLE 语句使用 PostgreSQL 的 SERIAL 类型。如果要使用 SQLite,则需要使用INTEGER. diesel GitHub 库 包含所有支持后端的修改示例。如果您使用 PostgreSQL 以外的其他后端,请确保查看这些的示例。
如果您更喜欢基于Rust代码生成迁移,则 diesel CLI 工具在 diesel migration generate 命令上提供了一个额外的 --diff schema,该命令允许基于当前模式定义和数据库生成迁移。要生成与显示的原始 SQL 迁移等效的迁移,您需要
创建
schema.rs文件写入如下内容:diesel::table! { posts (id) { id -> Int4, title -> Varchar, body -> Text, published -> Bool, } }table!宏的文档 包含用于此宏的语法。diesel::sql_types模块 提供了用于定义相关列的SQL端类型的文档。运行
diesel migration generate --diff-schema create_posts
这将生成预填充相关sql的迁移的 up.sql 和 down.sql 文件。之后,您应该继续执行 diesel migration run 步骤.
在生产环境使用迁移的一个提示
在准备应用程序用于生产时,您可能希望在应用程序的初始化阶段运行迁移。您可能还希望将迁移脚本作为代码的一部分,以避免将开发环境复制进去。
diesel_migrations 包提供了 embed_migrations! 宏, 允许您在最终的二进制文件中嵌入迁移脚本。 一旦您的代码使用了它, 您只需在main 函数的开头包含 connection.run_pending_migrations(migrations),即可在每次应用程序启动时运行迁移。
Diesel 中文文档
关于 LearnKu
推荐文章: