Как я могу увидеть конкретное значение sql_mode?


94

В sql_modeMySQL есть несколько значений:

ANSI,

IGNORE_SPACE,

STRICT_TRANS_TABLES, так далее

Как я могу увидеть одно конкретное значение? В руководстве говорится:

Вы можете получить текущий режим, выполнив инструкцию SELECT @@ sql_mode.

Но он просто ничего не показывает, только одно пустое поле в таблице с @@sql_modeименем столбца.

Ответы:


144

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

mysql> SELECT @@sql_mode;
+------------+
| @@sql_mode |
+------------+
|            |
+------------+
1 row in set (0.00 sec)

mysql> set sql_mode=ORACLE;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@sql_mode;
+----------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                           |
+----------------------------------------------------------------------------------------------------------------------+
| PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER |
+----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

2
Спасибо, это работает. Но у некоторых из них есть значения по умолчанию. Я имел в виду, что хотел увидеть значения по умолчанию, не задавая значения. Или это невозможно?
Грин

1
Все комбинированные режимы описаны здесь: dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html . Например, здесь вы можете увидеть, какие 7 режимов составляют комбинированный режим ORACLE: dev.mysql.com/doc/refman/5.5/en/…
Ike Walker

1
«По умолчанию режим SQL пуст (режимы не установлены)». Цитируется из страницы руководства по администрированию сервера MySQL для режимов SQL сервера . Я интерпретирую это как то, что ни один из специальных sql_mode не настроен из коробки.
Mister_Tom

@IkeWalker, Вы хотите сказать, что по умолчанию (режим "пустой") он эквивалентен как будто все PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USERи т.д. не выставлены? Или вы имеете в виду, что некоторые из них установлены, но просто не отображаются по умолчанию?
Pacerier

1
@Pacerier, первое верно. Если @@ sql_mode пуст (режим «пустой» , как вы это называете), то нет sql_mode не установлено. Я не буду комментировать sql_mode по умолчанию, потому что это зависит от того, какую версию MySQL вы используете.
Айк Уокер

23

Вы также можете попробовать это, чтобы определить текущее глобальное sql_mode значение:

SELECT @@GLOBAL.sql_mode;

или значение сеанса sql_mode :

SELECT @@SESSION.sql_mode;

У меня также было ощущение, что режим SQL действительно пуст.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.