7个版本
使用旧的Rust 2015
0.2.0 | 2023年1月22日 |
---|---|
0.1.5 | 2021年9月2日 |
0.1.4 | 2019年3月14日 |
0.1.3 | 2018年9月13日 |
0.1.0 | 2017年2月28日 |
#2637 in 数据库接口
42 每月下载量
在 dbmigrate 中使用
25KB
457 行
dbmigrate
创建和管理SQL迁移的工具。
支持的数据库
- Postgres
- MySQL
- Sqlite
使用方法
使用CLI
每次调用dbmigrate需要两个参数:数据库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工具就是这样的。
您需要将 dbmigrate-lib
依赖项添加到您的 Cargo.toml
文件中。最好的例子是查看 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,我在repo中有一个名为 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: 不需要数据库连接来创建迁移文件并更新依赖项
- 0.2.3: 迁移文件夹中无效文件不要慌,以及PostgreSQL的SSL支持
- 0.2.2: 对迁移名称进行slugify处理,并检查其是否正确
致谢
这受到了https://github.com/mattes/migrate的极大启发。
许可证
许可协议如下:
- Apache License,版本2.0,(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确表示,否则根据Apache-2.0许可证定义的,你提交的旨在包含在作品中的任何贡献,都将按上述方式双许可,不附加任何额外条款或条件。
依赖项
~6–23MB
~364K SLoC