3个不稳定版本
0.2.2 | 2022年3月24日 |
---|---|
0.2.1 | 2022年1月3日 |
0.1.0 | 2022年1月3日 |
#69 在 #database-migrations
38KB
924 行
这是一个用于管理MySQL数据库迁移的小型Rust应用程序。
它编译成一个名为 rmmm
的单个二进制文件。
默认情况下,配置通过在 rmmm
被调用的目录中的 db/
目录进行。迁移将存储在 db/migrations/v{版本}.sql
中,回滚将存储在 db/migrations/v{版本}_downgrade.sql
中,结构将被导出到 db/structure.sql
中。
基本用法
cargo安装 rmmm
rmmm generate foo
将弹出一个编辑器,让您编写迁移。迁移可以是任何数量的以;
字符结尾的独立SQL语句。注释将被删除。rmmm status
将显示所有挂起的迁移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-tls
或rustls-tls
中的零个或一个。
为什么?
有很多迁移管理工具。最受欢迎的独立选择是dogfish;还有使用更丰富库的各种生态系统的工具,例如为diesel的barrel,或Python的alembic。
这个工具与dogfish最接近,但避免了各种shell注入风险,并使用与其他常用框架相同的DATABASE_URL
配置字符串(Rust的mysql
,Python的sqlalchemy
,Ruby的activerecord
等)。
依赖关系
~19–38MB
~625K SLoC