19 个版本
使用旧的 Rust 2015
0.4.0 | 2023年1月22日 |
---|---|
0.3.6 | 2021年9月4日 |
0.3.5 | 2017年9月29日 |
0.3.4 | 2017年6月30日 |
0.1.0 | 2015年12月19日 |
#2470 在 数据库接口
43KB
698 行
dbmigrate
用于创建和管理 SQL 迁移的工具。
支持的数据库
- Postgres
- MySQL
- Sqlite
用法
使用 CLI
每次调用 dbmigrate 需要 2 个参数:数据库 URL 和迁移文件夹。这些可以通过环境变量设置: DBMIGRATE_URL
和 DBMIGRATE_PATH
,使用 .env 文件,或者作为调用参数。参数将覆盖环境变量。
# create a migration file
dbmigrate --url postgres://.. --path ./migrations create my_name
# apply all non applied migrations
dbmigrate --url postgres://.. --path ./migrations up
# un-apply all migrations
dbmigrate --url postgres://.. --path ./migrations down
# redo the last migration
dbmigrate --url postgres://.. --path ./migrations redo
# revert the last migration
dbmigrate --url postgres://.. --path ./migrations revert
# see list of migrations and which one is currently applied
dbmigrate --url postgres://.. --path ./migrations status
迁移文件的格式如下
0001.initial_db.up.sql
0001.initial_db.down.sql
您也可以将字符串传递给 create
,dbmigrate 将为您进行 slugify
dbmigrate --url postgres://.. --path ./migrations create "change currency table"
# gives the following files
0001.change_currency_table.up.sql
0001.change_currency_table.down.sql
.
(点) 在迁移名称中不允许,因为它是一个文件名分隔符字符。
使用库
迁移也可以通过编程方式完成,CLI 工具就是这样构建的。
您需要在您的 Cargo.toml
文件中添加 dbmigrate-lib
依赖。最好的例子是查看 dbmigrate
目录,它使用它来实现 CLI 工具。
本地测试
首先使用 cargo build
构建项目。假设您使用 Makefile 中的 Docker 图像进行 pg 和 mysql
Postgres
./target/release/dbmigrate --url=postgres://pg@localhost:5777/migrate --path=/my/full/path/migrations status
MySQL
./target/release/dbmigrate --url=mysql://mg:pass@localhost:5789/migrate --path=/my/full/path/migrations status
对于 Sqlite,我在仓库中有一个名为 dbmigrate.db
的 Sqlite 数据库(git 忽略)
./target/release/dbmigrate --path=/home/vincent/Code/dbmigrate/examples/migrations --url=sqlite:///dbmigrate.db status
使用不同的模式
dbmigrate 将使用默认模式。您可以从数据库 URL 中覆盖它,例如对于 Postgres
--url="postgres://postgres:@127.0.0.1:5432/migrate?application_name=my_app&options=-c search_path%3Dmy_app"
变更日志
Lib
- 0.1.5: 更新 postgres 依赖项
- 0.1.4: 使用
postgres-native-tls
- 0.1.1: 添加功能,以便您只需选择所需的数据库
CLI
- 0.3.4: 如果终端不支持颜色,则不会崩溃
- 0.3.3: 如果没有终端,则不会崩溃
- 0.3.2: 使用功能
- 0.3.1: 重构代码以创建 dbmigrate-lib 并将其用于 dbmigrate 工具
- 0.3.0: 添加 dotenv 支持 + 重构错误处理 + 更新依赖项
- 0.2.7: 更新文档以提及 sqlite 支持
- 0.2.6: 支持 Sqlite
- 0.2.5: 更新依赖项
- 0.2.4: 创建迁移文件时不需要 DB 连接,并更新依赖项
- 0.2.3: 迁移文件夹中无效文件不慌张 & 对PostgreSQL的SSL支持
- 0.2.2: 将迁移名称slugify并检查是否正确
致谢
本系统深受https://github.com/mattes/migrate的启发。
许可证
许可方式如下
- Apache License, Version 2.0, (LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT或http://opensource.org/licenses/MIT)
您可任选其一。
贡献
除非您明确表示,否则根据Apache-2.0许可证的定义,您有意提交的任何贡献,将被以上述方式双许可,不附加任何额外条款或条件。
依赖项
~10–27MB
~439K SLoC