Backend Matrix: post #2128 — TG.ME

🛠 Как не положить продакшн при миграциях БД

​Сохраняйте базовые правила, которые уберегут от 500-х ошибок:

​1. Добавление новой колонки с Default-значением

ALTER TABLE orders ADD COLUMN status VARCHAR DEFAULT 'pending';

на большой таблице это заблокирует её на чтение/запись, пока СУБД будет физически перезаписывать каждую строку.

Добавить колонку без default, накатить код, который умеет обрабатывать NULL как значение по умолчанию, и заполнять старые строки фоновым батч-процессом.

​2. Переименование колонки

Просто переименовать поле в БД и надеяться на быстрый деплой нового кода.

​Создать новую колонку рядом.
​Настроить триггер, который пишет данные в обе колонки одновременно. Начать миграцию старых данных.
​Перевести чтение на новую колонку, после чего старую можно безопасно удалить.

​3. Удаление колонки

Удалить из БД, а потом выкатить код.

Сначала выкатить версию кода, которая вообще не обращается к этой колонке. Убедиться, что всё стабильно, и только потом делать DROP COLUMN.
July 1, 2026 330 3