关于在迁移时的原始 sql 的一个提示 | 自述 |《diesel 中文文档》| rust 技术论坛-380玩彩网官网入口

未匹配的标注

由于迁移是用原始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.sqldown.sql 文件。之后,您应该继续执行 diesel migration run 步骤.

在准备应用程序用于生产时,您可能希望在应用程序的初始化阶段运行迁移。您可能还希望将迁移脚本作为代码的一部分,以避免将开发环境复制进去。

包提供了 宏, 允许您在最终的二进制文件中嵌入迁移脚本。 一旦您的代码使用了它, 您只需在main 函数的开头包含 connection.run_pending_migrations(migrations),即可在每次应用程序启动时运行迁移。

本文章首发在 380玩彩网官网入口 网站上。

上一篇
讨论数量: 0



暂无话题~
网站地图