$ loading_
提供数据库迁移最佳实践,支持模式变更、回滚与零停机发布方案
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "database-migrations" 技能: 1. 下载 https://raw.githubusercontent.com/affaan-m/ECC/main/skills/database-migrations/SKILL.md 2. 保存为 ~/.claude/skills/database-migrations/SKILL.md 3. 装好后重载技能,告诉我可以用了
我需要在 PostgreSQL 的 users 表新增一个非空字段 status,线上已有大量数据。请给我一个零停机迁移方案,包含分步 SQL、回填策略、索引处理、验证方法和回滚方案。
一份可执行的分阶段迁移方案,说明每一步的 SQL、风险控制与回滚做法。
请为 Prisma 和 TypeORM 项目整理数据库迁移最佳实践,涵盖命名规范、审查清单、避免破坏性变更的方法、如何处理数据迁移,以及 CI/CD 中的发布建议。
一套适用于 ORM 项目的迁移规范与检查清单,便于团队统一执行。
生产环境的 MySQL 迁移执行到一半失败,部分数据已写入。请帮我分析常见原因,并给出故障排查步骤、回滚策略、数据一致性检查方法,以及后续如何避免再次发生。
一份针对失败迁移的排障与恢复指南,帮助快速止损并改进流程。
Safe, reversible database schema changes for production systems.
Before applying any migration:
-- GOOD: Nullable column, no lock
ALTER TABLE users ADD COLUMN avatar_url TEXT;
-- GOOD: Column with default (Postgres 11+ is instant, no rewrite)
ALTER TABLE users ADD COLUMN is_active BOOLEAN NOT NULL DEFAULT true;
-- BAD: NOT NULL without default on existing table (requires full rewrite)
ALTER TABLE users ADD COLUMN role TEXT NOT NULL;
-- This locks the table and rewrites every row
-- BAD: Blocks writes on large tables
CREATE INDEX idx_users_email ON users (email);
-- GOOD: Non-blocking, allows concurrent writes
CREATE INDEX CONCURRENTLY idx_users_email ON users (email);
-- Note: CONCURRENTLY cannot run inside a transaction block
-- Most migration tools need special handling for this
Never rename directly in production. Use the expand-contract pattern:
-- Step 1: Add new column (migration 001)
ALTER TABLE users ADD COLUMN display_name TEXT;
-- Step 2: Backfill data (migration 002, data migration)
UPDATE users SET display_name = username WHERE display_name IS NULL;
-- Step 3: Update application code to read/write both columns
-- Deploy application changes
-- Step 4: Stop writing to old column, drop it (migration 003)
ALTER TABLE users DROP COLUMN username;
-- Step 1: Remove all application references to the column
-- Step 2: Deploy application without the column reference
-- Step 3: Drop column in next migration
ALTER TABLE orders DROP COLUMN legacy_status;
-- For Django: use SeparateDatabaseAndState to remove from model
-- without generating DROP COLUMN (then drop in next migration)
-- BAD: Updates all rows in one transaction (locks table)
UPDATE users SET normalized_email = LOWER(email);
-- GOOD: Batch update with progress
DO $$
DECLARE
batch_size INT := 10000;
rows_updated INT;
BEGIN
LOOP
UPDATE users
SET normalized_email = LOWER(email)
WHERE id IN (
SELECT id FROM users
WHERE normalized_email IS NULL
LIMIT batch_size
FOR UPDATE SKIP LOCKED
);
GET DIAGNOSTICS rows_updated = ROW_COUNT;
RAISE NOTICE 'Updated % rows', rows_updated;
EXIT WHEN rows_updated = 0;
COMMIT;
END LOOP;
END $$;
# Create migration from schema changes
npx prisma migrate dev --name add_user_avatar
# Apply pending migrations in production
npx prisma migrate deploy
# Reset database (dev only)
npx prisma migrate reset
# Generate client after schema changes
npx prisma generate
…
帮助开发者为代码代理配置性能优化、安全防护与研究优先工作流。
提供数据库迁移、回滚与零停机发布的最佳实践指导,适用于多种 ORM 与 SQL 数据库。
通过双评审智能体对结果进行对抗式校验,提升输出发布前的可靠性
帮助你掌握地道 Rust 模式、所有权与并发实践,编写安全高性能应用。
基于 C++ Core Guidelines 编写、审查并重构更安全现代的 C++ 代码。
为 Claude Code 会话提供系统化校验流程,帮助检查结果正确性与质量。
提供数据库迁移最佳实践,涵盖架构变更、回滚与零停机发布方案。
提供 PostgreSQL 查询优化、表结构设计、索引与安全实践建议
提供 PostgreSQL 查询优化、模式设计、索引与安全实践建议
连接多种主流数据库,帮助用户高效查询、分析与管理数据。
提供 PostgreSQL 查询优化、模式设计、索引与安全实践建议
帮助开发者规划 Convex 模式与数据迁移,支持破坏性变更、回填和零停机发布。