返回顶部
d

db-migrate数据库迁移管理

Database migration manager. Detects ORM/migration tool in use, generates migrations, handles rollbacks, creates seed scripts, diffs schemas between environments, backs up databases, and supports zero-downtime patterns. Use when the user says 'database migration', 'migrate', 'schema change', 'seed data', 'rollback', 'add a column', 'rename column', 'drop table', 'backfill', 'schema diff', or 'backup database'. Supports Prisma, Drizzle, Knex, TypeORM, Alembic, Django, raw SQL. Works with Postgres,

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.1
安全检测
已通过
104
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

db-migrate

数据库迁移管理器

检测。生成。迁移。回滚。零停机。

第一阶段:检测迁移工具

扫描项目以识别正在使用的ORM/迁移工具。按以下顺序检查:

信号工具
prisma/schema.prisma 或根目录下的 schema.prismaPrisma
drizzle.config.ts 或 drizzle.config.js 或 drizzle/ 目录
Drizzle |
| knexfile.js 或 knexfile.ts | Knex |
| ormconfig.json 或包含 TypeORM 导入的 data-source.ts | TypeORM |
| alembic.ini 或 alembic/ 目录 | Alembic |
| 包含 Django 导入的 manage.py | Django |
| 包含原始 .sql 文件且无ORM配置的 migrations/ 目录 | 原始 SQL |

如果未检测到任何工具,询问用户想要使用哪个。如果是全新开始,推荐 TypeScript 项目使用 Drizzle,Python 项目使用 Alembic,Django 应用使用 Django 迁移。

在执行任何操作前,先读取现有的迁移历史以了解当前模式状态。

第二阶段:确定操作

分类用户需求:

操作描述
generate从模式变更创建新迁移
run
应用待处理的迁移 |
| rollback | 回滚上一次迁移或回滚到特定点 |
| seed | 创建或运行种子数据脚本 |
| diff | 比较环境间的模式 |
| backup | 迁移前备份数据库 |
| zero-downtime | 生产环境安全的多步骤迁移 |

如果用户的请求暗示多个操作(例如,安全地迁移生产环境),则链式执行:备份 -> 差异比较 -> 生成 -> 运行。

第三阶段:按工具执行

Prisma

bash

从模式变更生成迁移


npx prisma migrate dev --name <迁移名称>

在生产环境应用(无交互提示)

npx prisma migrate deploy

重置数据库(仅开发环境——会销毁数据)

npx prisma migrate reset

检查迁移状态

npx prisma migrate status

模式变更后生成客户端

npx prisma generate

种子数据

npx prisma db seed

从现有数据库拉取模式

npx prisma db pull

推送模式而不生成迁移文件(仅开发环境)

npx prisma db push

Prisma 回滚:Prisma 没有内置的回滚命令。要回滚:

  1. 1. 创建一个反向变更的新迁移
  2. 或者从备份恢复
  3. 对于失败的迁移:npx prisma migrate resolve --rolled-back <迁移名称>

Prisma 种子设置:确保 package.json 包含:
json
{
prisma: {
seed: tsx prisma/seed.ts
}
}

Drizzle

bash

从模式变更生成迁移


npx drizzle-kit generate

应用迁移

npx drizzle-kit migrate

直接推送模式(仅开发环境——有破坏性)

npx drizzle-kit push

从现有数据库拉取模式

npx drizzle-kit pull

打开 Drizzle Studio(可视化浏览器)

npx drizzle-kit studio

检查当前状态

npx drizzle-kit check

Drizzle 回滚:Drizzle 生成 SQL 文件。要回滚:

  1. 1. 编写一个反向变更的新迁移
  2. 或者删除迁移文件并重新推送(仅开发环境)
  3. 对于生产环境:始终使用生成的 SQL 文件,绝不使用 push

Drizzle 种子:创建一个 seed.ts 文件并使用 tsx drizzle/seed.ts 运行,或向 package.json 添加脚本。

Knex

bash

创建新的迁移文件


npx knex migrate:make <迁移名称>

运行待处理的迁移

npx knex migrate:latest

回滚上一批

npx knex migrate:rollback

回滚所有迁移

npx knex migrate:rollback --all

检查迁移状态

npx knex migrate:status

运行种子文件

npx knex seed:run

创建新的种子文件

npx knex seed:make <种子名称>

Knex 迁移模板
js
exports.up = function(knex) {
return knex.schema.createTable(表名, (table) => {
table.increments(id).primary();
table.timestamps(true, true);
});
};

exports.down = function(knex) {
return knex.schema.dropTable(表名);
};

TypeORM

bash

从实体变更生成迁移


npx typeorm migration:generate -d src/data-source.ts src/migrations/<迁移名称>

创建空迁移

npx typeorm migration:create src/migrations/<迁移名称>

运行待处理的迁移

npx typeorm migration:run -d src/data-source.ts

回滚上一次迁移

npx typeorm migration:revert -d src/data-source.ts

显示迁移和状态

npx typeorm migration:show -d src/data-source.ts

Alembic (Python/SQLAlchemy)

bash

从模型变更自动生成迁移


alembic revision --autogenerate -m 变更描述

创建空迁移

alembic revision -m 变更描述

应用所有待处理的迁移

alembic upgrade head

升级到特定修订版本

alembic upgrade <修订版本ID>

回滚一步

alembic downgrade -1

回滚到特定修订版本

alembic downgrade <修订版本ID>

显示当前修订版本

alembic current

显示迁移历史

alembic history

显示所有分支头

alembic heads

Django

bash

从模型变更生成迁移


python3 manage.py makemigrations

为特定应用生成

python3 manage.py makemigrations <应用名称>

应用所有待处理的迁移

python3 manage.py migrate

应用特定应用的迁移

python3 manage.py migrate <应用名称> <迁移编号>

回滚到特定迁移

python3 manage.py migrate <应用名称> <迁移编号>

回滚应用的所有迁移

python3 manage.py migrate <应用名称> zero

显示迁移状态

python3 manage.py showmigrations

生成SQL而不应用

python3 manage.py sqlmigrate <应用名称> <迁移编号>

创建空迁移

python3 manage.py makemigrations --empty <应用名称>

原始 SQL

当未检测到ORM且项目使用原始SQL时:

  1. 1. 如果不存在,创建 migrations/ 目录
  2. 使用时间戳前缀命名文件:YYYYMMDDHHMMSS描述.sql
  3. 每个迁移文件应包含 -- UP 和 -- DOWN 部分
  4. migrations 表中跟踪已应用的迁移

原始 SQL 迁移模板
sql
-- UP
CREATE TABLE IF NOT EXISTS example (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);

-- DOWN
DROP TABLE IF EXISTS example;

迁移跟踪表
sql
CREATE TABLE IF NOT EXISTS _migrations (
id SERIAL PRIMARY KEY,
filename VARCHAR(255) NOT NULL UNIQUE,
applied_at TIMESTAMP DEFAULT NOW()
);

第四阶段:数据库备份

在生产环境运行迁移前始终进行备份。 在任何破坏性操作前主动提供备份。

Postgres

bash

完整数据库转储(压缩)

pgdump -Fc -f backup$(date +%Y%m%d%H%M%S).dump $DATABASEURL

仅模式

pgdump --schema-only -f schema$(date +%Y%m%d%H%M%S).sql $DATABASEURL

特定表

pgdump -t 表名 -f tablebackup.dump $DATABASE_URL

从转储恢复

pgrestore -d $DATABASEURL backup.dump

从SQL恢复

psql $DATABASE_URL < backup.sql

角色和全局对象(完整恢复所需)

pg_dumpall --globals-only -f globals.sql

MySQL

bash

完整数据库转储

mysqldump -u $DBUSER -p $DBNAME > backup$(date +%Y%m%d%H%M%S).sql

仅模式

mysqldump -u $DB_USER -p --no-data $DB

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 database-migration-manager-1775711526 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 database-migration-manager-1775711526 技能

通过命令行安装

skillhub install database-migration-manager-1775711526

下载

⬇ 下载 db-migrate v1.0.1(免费)

文件大小: 6.87 KB | 发布时间: 2026-4-11 22:54

v1.0.1 最新 2026-4-11 22:54
Added explicit security notes, required-tools declaration, and safety guards for production operations

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部