MySQL молча потерял данные.

😱 MySQL молча потерял данные. Без ошибки Коллеги, данные записывались. Данные были пустыми. Ошибки не было.

Типы перемещений не совпадали с MySQL enum. БД молча обрезала значения.

📍Что происходило В коде: движения типа "internal_transfer", "supplier_delivery", "customer_return"

В MySQL: enum('transfer', 'delivery', 'return')

MySQL принимал запросы, но сохранял пустые строки. Никаких ошибок в логах.

📍Как нашёл Code review с AI на предмет консистентности: "Сравни типы данных в коде с схемой базы"

AI нашёл несоответствие через dbml-анализ. Проверил таблицу: 847 записей с пустым типом движения.

📍Почему молча MySQL в режиме по умолчанию (не strict mode):

Это "фича" совместимости с древними приложениями.

📍Исправление

  1. sql_mode = STRICT_TRANS_TABLES
  2. Обновил enum в схеме
  3. Миграция данных (восстановил 847 записей)
  4. Добавил валидацию в приложении

Теперь ошибки падают громко, как и должно быть.

📍Урок Silent failures хуже громких ошибок. Лучше упасть с traceback, чем молча потерять данные.

Всегда включайте strict mode в production БД.

Как настроил мониторинг целостности данных для всех проектов. Чеклист database safety в бесплатном гиде.

#моикейсы_поповвии Работаем дальше.

Поделиться: Telegram LinkedIn X

Больше — в канале

Практические кейсы AI-автоматизации для предпринимателей

Vladislav Popov

Владислав Попов

AI-консультант, 15+ лет в IT, PhD (University of York). Помогаю предпринимателям автоматизировать бизнес с помощью AI.