Як я можу побачити конкретне значення 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 Server . Я трактую це як таке, що жоден спеціальний режим 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.