У меня есть разработчик, который поддерживает старое приложение, и просит меня изменить наш режим MySQL в глобальном масштабе на строгий — однако у нас есть несколько других баз данных на том же сервере, которые, очевидно, требуют строгого режима.
Я считаю, что можно изменить режим на уровне сеанса, и я попробовал следующий код, чтобы сделать это.
session_start();
include_once("./includes/conn.php");
mysql_query("SET SESSION sql_mode = ''");
Но это, похоже, не работает — тестирование режима сообщает о глобальных и сессионных значениях.
session User : name
session Security : 27478239
MySQL server version : 5.5.5-10.0.23-MariaDB
GLOBAL : STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
SESSION : STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
Можно ли изменить режим SQL на уровне сеанса (или уровне базы данных), и если да, то как этого достичь?
Есть два синтаксиса (Что ж, на самом деле три) изменить значение сеанса, все из которых должны быть эквивалентны:
SET SESSION sql_mode = '';
SET @@SESSION.sql_mode = '';
SET @@sql_mode = '';
Чтобы прочитать значение обратно:
SELECT @@SESSION.sql_mode;
SELECT @@sql_mode;
Конечно, поскольку это значение сеанса:
Других решений пока нет …