Изменение режима MySQL за сеанс

У меня есть разработчик, который поддерживает старое приложение, и просит меня изменить наш режим 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 на уровне сеанса (или уровне базы данных), и если да, то как этого достичь?

0

Решение

Есть два синтаксиса (Что ж, на самом деле три) изменить значение сеанса, все из которых должны быть эквивалентны:

SET SESSION sql_mode = '';
SET @@SESSION.sql_mode = '';
SET @@sql_mode = '';

Чтобы прочитать значение обратно:

SELECT @@SESSION.sql_mode;
SELECT @@sql_mode;

Конечно, поскольку это значение сеанса:

  • Это не повлияет на глобальные настройки
  • Это не выживет после текущей сессии
  • Это не будет течь к другим сессиям
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]