Режим SQL влияет на поведение MySQL в определенных ситуациях. Например, это влияет на то, что происходит, если вы пытаетесь вставить слишком длинный контент в столбец типа текста. Допустим, у вас есть столбец типа CHAR(10) CHARACTER SET ascii NOT NULL
, и вы пытаетесь вставить 'abcdef abcdef'
. Это 13 символов, что слишком долго. Если текущий режим SQL включает STRICT_TRANS_TABLES
или STRICT_ALL_TABLES
, MySQL не будет вставлять значение, но выдаст сообщение об ошибке. Если ни один из них не включен, MySQL урезает строку до 10 символов, т.е. 'abcdef abc'
, и вставляет ее.
Существует множество других вариантов поведения, на которые влияет режим SQL. Это был просто пример.
Лично я использую TRADITIONAL
, что является сокращением для ссылки, указанной в dcp. По сути, это делает MySQL менее прощающим, когда вы отправляете неверный ввод, что я считаю предпочтительным, потому что, если я отправлю MySQL что-то недопустимое, я бы лучше знал об этом, а не заставил бы MySQL выдумать это и не сказал бы, что это сделано.