/migrate
Создание и применение миграций БД: Alembic, Prisma Migrate, Django. С проверкой rollback.
Описание
Простым языком
База данных — это как таблица в Excel. Иногда нужно добавить новую колонку или переименовать существующую. Просто так это не сделаешь — нужно аккуратно внести изменения, чтобы старые данные не потерялись. /migrate делает это безопасно.
Напиши /migrate create с описанием что хочешь изменить — Claude создаст инструкцию для обновления базы, проверит что всё можно откатить назад, и только потом применит. Перед удалением данных — обязательно предупредит.
Что делает
/migrate управляет миграциями базы данных: создаёт, проверяет rollback, применяет на dev или prod. Автоматически определяет систему миграций по проекту (Alembic, Prisma Migrate, Django). Перед любым деструктивным изменением (DROP) — предупреждает и создаёт бэкап.
Синтаксис
# Создать новую миграцию
/migrate create добавить индекс на questions.slug
# Применить все ожидающие миграции
/migrate apply
# Откатить последнюю миграцию
/migrate rollback
# Показать текущее состояние
/migrate statusПошаговый процесс
- Определяет систему миграций: ищет
alembic.ini,prisma/schema.prisma,manage.py - Проверяет текущее состояние: нет ли незаappлицированных миграций
create: генерирует новую миграцию с описательным именем (дата + описание)- Автоматически проверяет rollback:
downgrade -1→upgrade headна dev-базе apply: применяет миграции с бэкапом если есть деструктивные операции- При DROP TABLE/COLUMN — явное предупреждение и запрос подтверждения
- На prod: создаёт
pg_dumpбэкап перед применением
Примеры использования
Добавление новой таблицы
Разрабатываете фичу Frameworks — нужна новая коллекция. /migrate create генерирует миграцию и проверяет что rollback работает.
/migrate create добавить коллекцию frameworks
# Создана миграция:
# 20260227_182730_добавить_коллекцию_frameworks.ts
# Автопроверка rollback:
prisma migrate dev --name добавить_коллекцию_frameworks
prisma migrate reset --force # тест rollback на dev
prisma migrate dev # применить снова
# Результат: rollback работает, безопасно деплоитьДеструктивная миграция (удаление поля)
Удаляете deprecated поле. /migrate предупреждает и создаёт бэкап перед применением на проде.
/migrate create удалить поле legacy_username из users
# Предупреждение:
[WARN] Деструктивная операция: DROP COLUMN users.legacy_username
Данные будут удалены безвозвратно.
Проверьте что код не использует это поле:
grep -r "legacy_username" src/ → 0 результатов
Создать бэкап таблицы users перед применением?
[да/нет]
# После подтверждения:
pg_dump -t users > backup_users_20260227.sql
Миграция применена.Автоматизация
В CI/CD миграции применяются автоматически при деплое. Порядок: сначала миграция, потом перезапуск приложения. Если миграция упала — деплой останавливается, rollback применяется автоматически.
# Порядок деплоя в docker-compose.yml:
services:
migrate:
image: app
command: npx payload migrate
depends_on:
postgres:
condition: service_healthy
app:
image: app
depends_on:
migrate:
condition: service_completed_successfullyМиграция без проверки rollback — это мина замедленного действия. /migrate проверяет это за вас.
> Пока нет комментариев
Связанный контент
Похожие инструменты
interface-design
Проектирование пользовательских интерфейсов: user flows, wireframes, информационная архитектура, навигация.
Открыть →frontend-design
UI/UX-дизайн и паттерны: компоненты, layout, адаптивность, доступность, анимации.
Открыть →api-design
Проектирование REST и WebSocket API: эндпоинты, схемы, валидация, версионирование, документация.
Открыть →aiogram-bot
Скилл для создания Telegram-ботов на Aiogram v3. Генерирует структуру проекта, хендлеры, FSM, инлайн-кнопки и интеграцию с базой данных.
Открыть →