Руководство по Prisma (Разработка и Продакшн)
Рабочий процесс разработки
Ежедневные операции
# Получить последние измененияgit pull
# Синхронизировать с базой данныхnpx prisma db pull
# Сгенерировать клиентnpx prisma generateИзменения схемы
# После изменения schema.prismanpx prisma migrate dev --name описание_изменений
# Проверка через GUInpx prisma studioСброс базы данных (только для разработки)
# Удаляет все данные и применяет миграции зановоnpx prisma migrate resetТестовые данные
# Заполнить базу данных тестовыми даннымиnpx prisma db seedОперации в продакшене
Применение миграций
# ТОЛЬКО для продакшена - применяет существующие миграцииnpx prisma migrate deployПроверка статуса
# Проверить статус миграцийnpx prisma migrate statusУправление схемой
Валидация схемы
# Форматирование schema.prismanpx prisma format
# Валидация схемыnpx prisma validateСинхронизация с базой данных
# Получить текущую схему из базы данныхnpx prisma db pull
# Отправить схему в базу данных (только для разработки!)npx prisma db pushКомандная работа
Обработка новых изменений
git pullnpx prisma generateСоздание изменений
# 1. Создать веткуgit checkout -b feature/name
# 2. Изменить schema.prisma
# 3. Создать миграциюnpx prisma migrate dev --name описание
# 4. Закоммитить ВСЕ файлыgit add prisma/schema.prismagit add prisma/migrations/*git commit -m "feat: описание"Важные правила
Ограничения для продакшена
❌ Никогда не использовать в продакшене:
prisma migrate devprisma migrate resetprisma db push
Ограничения для разработки
❌ Никогда в разработке:
- Удалять файлы миграций вручную
- Модифицировать существующие миграции
- Делать прямые изменения в базе данных
Решение проблем
Конфликты миграций
# 1. Сохранить измененияgit stash
# 2. Получить последние измененияgit pull
# 3. Сбросить базу данныхnpx prisma migrate reset
# 4. Восстановить измененияgit stash pop
# 5. Создать новую миграциюnpx prisma migrate devРассинхронизация схемы
# Проверить текущую схемуnpx prisma db pull
# Исправить различияnpx prisma migrate devСтруктура проекта
prisma/ ├── schema.prisma # Основная схема ├── migrations/ # Файлы миграций └── seed.ts # Скрипт с тестовыми даннымиПеременные окружения
Разработка (.env)
DATABASE_URL="postgresql://user:password@localhost:5432/dbname"Продакшен (.env.production)
DATABASE_URL="postgresql://prod_user:prod_pass@prod.host:5432/prod_db"Лучшие практики
✅ Всегда:
- Тестировать миграции в разработке перед продакшеном
- Коммитить все файлы миграций
- Использовать понятные имена для миграций
- Делать резервную копию перед применением миграций в продакшене
- Координировать крупные изменения схемы с командой