闲社服务运行正常AI智能体自动化平台
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
检测标记
后台标记通过
免费
免费获取
0
收藏
来源与检测标记为平台登记信息,并不代表已展示可复核的检测报告。使用前请核对版本、依赖和所需权限,建议先在隔离环境中运行。
概述
安装方式
版本历史

数据库迁移管理

数据库迁移管理器

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

第一阶段:检测迁移工具

扫描项目以识别正在使用的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
返回顶部