Советы PHP-разработчика

Блог содержащий короткие заметки касающиеся программирования для web.

Установка strict mode для MySQL

Установка strict mode для MySQL

При разработке приложения, которое работает с БД, необходимо по-максимуму обеспечить корректность работы с ней. Лучший способ обеспечить себе здоровый сон, когда ваше приложение работает на продакшене - включить строгий режим работы СУБД.

Конечно это не гарантирует 100-процентной уверенности, но поможет отловить некоторые неприятные ошибки. Итак, приведу краткое описание некоторых весьма полезных режимов:

  • STRICT_TRANS_TABLES - запрещает вставку некорректных данных (например, слишком большое число или длинная строка)
  • NO_ZERO_DATE - запрещает вставку дат с нулевым значением (например, 0000-00-00)
  • NO_ZERO_IN_DATE - запрещает вставку дат, которые содержат в себе нулевые значения года, месяца и т.д (например, 2015-00-05).

Установка режима может осуществляться тремя способами:

  • Добавлением строки в файл конфигурации my.cnf (для unix) или my.ini (для windows)

    sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE"

    Рекомендую именно этот вариант.

  • Добавлением параметра к строке запуска сервера MySQL

    --sql_mode="STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE"
  • Установкой глобального значения через выполнение команды (работает до перезапуска сервера)

    SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE';
  • Установкой значения для сессии через выполнение команды (работает в текущей сессии)

    SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE';

Полный список режимов MySQL можно посмотреть в официальной документации.

  • 2015-06-27 12:13:42