用途:db-migrate 用于跨框架管理数据库迁移,支持创建新迁移、查看迁移状态、校验迁移文件。它通过扫描项目标记文件自动识别迁移框架,并驱动该框架的原生 CLI,不自行发明命令。
主要能力:
- 检测框架:扫描 alembic.ini、prisma/schema.prisma、knexfile.、flyway.conf、db/migrate/、manage.py、atlas.hcl、typeorm.config.、ormconfig.*、liquibase.properties 等标记文件,并检查 package.json、pyproject.toml、requirements.txt、Gemfile 中的依赖。若检测到多个框架会询问用户,未检测到则请用户指明。
- 创建迁移:按项目已有命名规范生成迁移文件,支持 --name 指定名称,支持 --dry-run 预览;生成后读回文件展示,并执行校验。
- 状态查询:运行框架状态命令,展示已应用迁移(含时间戳)、待应用迁移和当前 schema 版本。
- 校验:检查回滚是否存在、命名规范、外键索引覆盖、破坏性操作(DROP TABLE、DROP COLUMN、TRUNCATE、DELETE FROM)以及数据与结构混合变更。
使用方式:根据 $ARGUMENTS 或用户表述确定操作,默认 create。创建时若未提供 --name 会先询问名称。执行连接数据库的命令前会检查环境变量(APP_ENV、RAILS_ENV、NODE_ENV、DJANGO_SETTINGS_MODULE)、DATABASE_URL 或配置主机及 --env/profile,疑似生产环境会先要求确认。
限制:破坏性操作只报告不自动修复,需用户明确确认;不自动修复破坏性操作或数据与结构混合变更;自动生成的迁移需人工复核;MySQL 的 DDL 自动提交,检测到时会提示而非假设事务包裹。最终报告仅使用命令实际输出,不猜测文件路径或迁移名称。