Как заставить MySQL выйти из ТРАДИЦИОННОГО режима? - PullRequest
3 голосов
/ 30 ноября 2010

У меня есть старое приложение, которое начало отказывать после обновления с MySQL 5.0 до 5.1.

Небольшое исследование показало, что это происходит из-за "строгого режима", который предотвращает вставку определенных типов "недопустимых" значений, которые ранее были просто автоматически преобразованы во что-то разумное.

Я пытался SET @@SESSION.sql_mode = '' и SET @@GLOBAL.sql_mode = '', но все равно получаю ошибку.

Также пробовал комментировать sql_mode в my.ini.

Есть ли более сильный, своего рода "ядерный" вариант, чтобы это исправить?

Ответы [ 2 ]

5 голосов
/ 30 ноября 2010

В моем приложении я обычно проверяю, что соединение MySQL использует традиционный режим, выдавая

SET SESSION sql_mode = 'ANSI_QUOTES,TRADITIONAL'

на каждом новом соединении. Я полагаю, что если вы просто выпустите

SET SESSION sql_mode = ''

при каждом новом подключении вы решаете проблему.

Вы должны иметь возможность изменить режим SQL по умолчанию для новых соединений, введя

SET GLOBAL sql_mode = ''

но вы должны использовать учетную запись с достаточными правами для этого, иначе она не будет работать.

Я думаю, что если вы хотите убедиться, что для вашего приложения работает определенный режим SQL, самый надежный способ сделать это - установить его для каждого нового соединения.

0 голосов
/ 30 ноября 2010

Чтобы разрешить недопустимые даты, вам необходимо:

SET sql_mode = 'ALLOW_INVALID_DATES';

Но вам лучше исправить приложение.

...