Что используется:
Laravel (nginx + php-fpm + mysql) + git
Для изменений в базе используются миграции laravel.
Как применять миграции без 5XX ошибок?
- Допустим из таблицы удаляется столбец - нет проблем, затягиваем коммит с кодом который не использует столбец -> запускаем миграции
- Допустим в таблицу добавился столбец - разбить деплой на 2 коммита?
- с миграцией которая просто добавит столбец
- с кодом который его использует
- Допустим отношение с hasMany поменялось на manyToMany - так же разбить на 2 коммита?
- добавляет таблицу которая связывает 2 другие таблицы, переносит отношения
- код который работает уже с manyToMany + миграция которая удаляет отношение hasMany. Тут нужно учесть что между деплоем первого и второго коммита могут появиться новые записи, их нужно отслеживать на уровне базы (тригерами)? и при деплое второго его удалять?
Если обычный сайт, то можно не разбивать на коммиты, закрыть сайт (php artisan down) -> запустить миграции -> открыть сайт (php artisan up)
Если проект используется как api, то такой способ не подойдет.
Как обычно решают такие проблемы?