Payload CMS миграция не применяется — типичные ошибки и решения

задан 21 февизменён 26 февпросмотров: 2ответов: 1

Создал миграцию через 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..."
Stackovervibe·26 фев

Связанный контент

$ написать ответ

markdown