Imported from xiangteng007/light-keepers (
.agent/skills/database-migration/SKILL.md). Install upstream withnpx skills add xiangteng007/light-keepers --skill database-migration. Copyright stays with the author.
Database Migration Skill
管理 TypeORM 資料庫遷移。
創建遷移
自動生成(從 Entity 變更)
cd backend
npm run migration:generate -- src/migrations/DescriptiveName
手動創建空白遷移
cd backend
npm run migration:create -- src/migrations/DescriptiveName
執行遷移
運行所有待執行遷移
npm run migration:run
回滾上一次遷移
npm run migration:revert
查看遷移狀態
npm run migration:show
遷移檔案結構
import { MigrationInterface, QueryRunner } from 'typeorm';
export class DescriptiveName1234567890 implements MigrationInterface {
name = 'DescriptiveName1234567890';
public async up(queryRunner: QueryRunner): Promise<void> {
// 升級操作
await queryRunner.query(`ALTER TABLE ...`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
// 回滾操作
await queryRunner.query(`ALTER TABLE ...`);
}
}
最佳實踐
- 命名規範: 使用描述性名稱,如
AddUserEmailIndex - 原子性: 每個遷移只做一件事
- 可回滾: 確保
down()方法正確實作 - 測試: 在開發環境先測試遷移
- 備份: 生產環境執行前先備份資料庫
