3个不稳定版本

0.2.2 2022年3月24日
0.2.1 2022年1月3日
0.1.0 2022年1月3日

#69#database-migrations

ISC 许可证

38KB
924

这是一个用于管理MySQL数据库迁移的小型Rust应用程序。

CI Crates.io Crates.io

它编译成一个名为 rmmm 的单个二进制文件。

默认情况下,配置通过在 rmmm 被调用的目录中的 db/ 目录进行。迁移将存储在 db/migrations/v{版本}.sql 中,回滚将存储在 db/migrations/v{版本}_downgrade.sql 中,结构将被导出到 db/structure.sql 中。

基本用法

  1. cargo安装 rmmm
  2. rmmm generate foo 将弹出一个编辑器,让您编写迁移。迁移可以是任何数量的以 ; 字符结尾的独立SQL语句。注释将被删除。
  3. rmmm status 将显示所有挂起的迁移
  4. rmmm upgrade latest 将应用挂起的迁移。您也可以升级(或降级)到特定版本。

修改操作将仅打印它们默认会做什么,并且必须使用 --execute 运行以进行更改。

架构版本只是用于简单起见的递增整数。

通常通过环境变量进行配置

环境变量 含义
$DATABASE_URL 连接到MySQL的URL(mysql://
$DATABASE_DSN 连接到MySQL的DSN(如go-sql-driver所述)
$MIGRATION_PATH 存储状态的路径(默认为 ./db

必须传递 $DATABASE_URL$DATABASE_DSN。它们也可以作为 --database-dsn--database-url 传递给程序。

本作品根据ISC许可证授权,许可证的副本可在LICENSE.txt中找到。

特性

RMMM支持以下功能标志

名称 含义 默认启用
uuid 添加对原生MySQL UUID类型的支持
native-tls 使用native-tls通过本地库(OpenSSL等)获取SSL支持
rustls-tls 使用rustls获取SSL支持

您可以启用native-tlsrustls-tls中的零个或一个。

为什么?

有很多迁移管理工具。最受欢迎的独立选择是dogfish;还有使用更丰富库的各种生态系统的工具,例如为diesel的barrel,或Python的alembic

这个工具与dogfish最接近,但避免了各种shell注入风险,并使用与其他常用框架相同的DATABASE_URL配置字符串(Rust的mysql,Python的sqlalchemy,Ruby的activerecord等)。

依赖关系

~19–38MB
~625K SLoC