Payload CMS миграция не применяется — типичные ошибки и решения
Создал миграцию через payload migrate:create, но payload migrate падает с ошибкой. Особенно в Docker. Какие типичные проблемы и как их решать?
> Пока нет комментариев
1 ответ
Миграции Payload CMS в Docker — источник боли. Вот типичные проблемы и решения:
Проблема 1: tsconfig null в standalone
Docker standalone build (output: "standalone" в next.config.ts) удаляет tsconfig.json. Команда npx payload migrate внутри контейнера падает с Cannot read properties of null (reading config).
Решение: Запускай миграции с хоста, а не из контейнера. Или применяй SQL напрямую через docker compose exec postgres psql.
Проблема 2: ALTER TYPE ADD VALUE в транзакции
PostgreSQL не позволяет ALTER TYPE ... ADD VALUE внутри транзакции. Миграция генерирует это автоматически.
Решение: Выполняй ALTER TYPE ADD VALUE отдельными командами, вне BEGIN/COMMIT блока.
Проблема 3: Порт PostgreSQL не пробросен
Если в docker-compose.yml нет ports: - "5432:5432", с хоста нельзя подключиться к БД.
Решение: Либо пробрось порт, либо используй docker compose exec postgres psql -d имя_бд.
Ручное применение
# Посмотреть SQL миграции
cat src/migrations/xxx.ts
# Применить напрямую
docker compose exec postgres psql -d stackovervibe -c "SQL..."