Есть какой-нибудь простой способ перейти на строгий MySQL / MariaDB? - PullRequest
0 голосов
/ 20 июня 2020

Мне нужно заставить огромное приложение работать с новой версией MariaDB. В используемой в настоящее время версии не используются правила sql_mode, в то время как более новые версии более строгие и возвращают ошибки, например, если вы забыли вставить значение для поля, которое не равно NULL.

Есть ли простой способ миграции ?

Я надеялся, что правила sql_mode можно будет использовать для регистрации предупреждений вместо выдачи ошибок, но я не могу найти ничего подобного. Если это действительно существует, то было бы здорово, так как я мог бы просто начать с регистрации предупреждений, исправить их, а затем go установить значение по умолчанию, которое вместо этого возвращает ошибки.

Я также посмотрел на performance_schema для ведения журнала, и хотя он регистрирует некоторые предупреждения, он, похоже, не регистрирует предупреждения для всего, для чего новые версии MariaDB выдают ошибки.

И идея о том, как я могу это сделать, не добавляя IGNORE к каждому оператору INSERT / UPDATE преобразовать ошибки в предупреждения?

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

Надеюсь, кто-то знает, как это можно сделать.

1 Ответ

0 голосов
/ 20 июня 2020

Вы можете изменить sql_mode в более новой версии MySQL, чтобы оно соответствовало значению, которое вы использовали в вашей текущей версии. Изменилось только значение по умолчанию sql_mode. Вы можете установить для параметра все, что хотите.

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

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

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

Это потребует много работы, но это простой и понятный метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...