mcpField
C
Create database migration

Create database migration

github.com/tryghost数据与数据库55.6k87 次安装今天更新
代码仓库

关于 Create database migration

Create database migration 是 Ghost 代码库中创建数据库迁移的可执行检查清单,并配有规范指南,涵盖迁移生成、模式更新、回滚与正向测试及相关检查。

主要功能

  1. 01迁移生成流程
  2. 02模式同步步骤
  3. 03回滚与正向迁移测试
  4. 04导出器表列表更新
  5. 05针对性迁移测试指南

适用场景

  1. 01在 Ghost 中添加数据库迁移
  2. 02随迁移更新模式定义
  3. 03验证回滚和迁移行为

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tryghost/ghost --skill create-database-migration

安装后在 Claude Code 中输入/create-database-migration确认已加载。

附带文件examples.mdrules.md

详细介绍

创建数据库迁移

创建迁移前,请阅读规范的人类指南 docs/practices/database-migrations.md。 本技能是配套的可执行检查清单。

说明

如果要添加的新表结构仍在变更中,可以考虑先将其标记为开发中,而不是编写迁移;请参阅指南中的“仍在开发中的新表”。

  1. 创建一个新的空迁移文件:从仓库根目录运行 pnpm gx generate migration <kebab-case-slug>。重要:不要手动创建迁移文件;始终使用此脚本创建初始空迁移文件。slug 必须使用 kebab-case(例如,add-column-to-posts)。
  2. 如果需要,上述命令会在 ghost/core/server/data/migrations/versions 中创建新目录,使用适当的名称创建空迁移文件;如果这是发布后的第一个迁移,还会将 core 和 admin 软件包版本提升为 RC。
  3. 按照代码库中已有的模式,更新迁移文件,加入你想对数据库进行的更改。在适用的情况下,优先使用 ghost/core/server/data/migrations/utils/* 中的实用函数。
  4. 更新 ghost/core/server/data/schema/schema.js 中的架构定义文件,并确保其与迁移中的最新更改一致。
  5. 从仓库根目录手动测试迁移:pnpm knex-migrator migrate --v {version directory} --force
  6. 回滚迁移以测试 down():pnpm knex-migrator rollback --v {previous version} --force,然后再次向前执行迁移。
  7. 运行迁移集成测试,测试范围包括初始化、回滚、向前迁移和幂等性:cd ghost && pnpm test:single test/integration/migrations/migration.test.js。该测试需要 MySQL 正在运行;运行 pnpm dev 会启动 MySQL。
  8. 如果要添加或删除表,请酌情更新 ghost/core/server/data/exporter/table-lists.js。ghost/test/unit/server/data/exporter/index.test.js 中的一致性断言会检查架构中的每张表是否都已归类到导出器列表中。
  9. 更改表列表时,运行针对性的导出器单元测试:cd ghost && pnpm test:single test/unit/server/data/exporter/index.test.js。
  10. 对于架构更改,运行架构同步测试:cd ghost && pnpm test:single test/integration/migrations/schema-sync.test.ts。对于 fixtures、默认设置或默认路由的更改,运行数据库完整性测试,并且只更新受影响的哈希:cd ghost && pnpm test:single test/unit/server/data/schema/integrity.test.ts
  11. 运行 Ghost core 中的单元测试,并持续迭代直至通过:cd ghost && pnpm test:unit

示例

迁移示例请参阅 examples.md。

规则

创建数据库迁移时必须始终遵循的规则请参阅 rules.md。

评论

支持 Markdown