Jak mogę zobaczyć konkretną wartość sql_mode?

95

W sql_modeMySQL jest kilka wartości:

ANSI,

IGNORE_SPACE,

STRICT_TRANS_TABLESitp

Jak mogę zobaczyć jedną konkretną wartość? Instrukcja mówi:

Możesz pobrać bieżący tryb, wydając instrukcję SELECT @@ sql_mode.

Ale po prostu nic nie pokazuje, tylko jedno puste pole w tabeli z @@sql_modenazwą kolumny.

Zielony
źródło

Odpowiedzi:

146

Jest ono puste tylko dlatego, że nie ustawiłeś trybu sql_mode. Jeśli ją ustawisz, to zapytanie pokaże ci szczegóły:

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)
Ike Walker
źródło
2
Dziękuję, to działa. Ale niektóre z nich mają swoje domyślne wartości. Miałem na myśli, że chciałem zobaczyć wartości domyślne bez ustawiania wartości. Czy to niemożliwe?
Zielony
1
Wszystkie tryby kombinacji są udokumentowane tutaj: dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html . Na przykład tutaj możesz zobaczyć, które 7 trybów obejmuje tryb kombinacji ORACLE: dev.mysql.com/doc/refman/5.5/en/…
Ike Walker
1
„Domyślny tryb SQL jest pusty (brak ustawionych trybów)”. Cytat ze strony podręcznika MySQL Server Administration dla trybów SQL Server . Rozumiem, że oznacza to, że żaden ze specjalnych trybów sql_mode nie jest ustawiony po wyjęciu z pudełka.
Mister_Tom,
@IkeWalker, czy masz na myśli to, że domyślnie (tryb „blank”) jest to równoważne z tym, że wszystkie opcje PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USERi etc nie są ustawione? A może masz na myśli to, że niektóre z nich są ustawione, ale po prostu nie są wyświetlane domyślnie?
Pacerier
1
@Pacerier to pierwsze jest poprawne. Jeśli @@ tryb_sql jest pusty (tryb „pusty”, jak go nazywasz), nie jest ustawiony żaden tryb_sql. Nie będę komentował domyślnego trybu sql_mode, ponieważ zależy to od używanej wersji MySQL.
Ike Walker,
24

Możesz również spróbować tego, aby określić bieżącą wartość globalną sql_mode :

SELECT @@GLOBAL.sql_mode;

lub wartość sesji sql_mode :

SELECT @@SESSION.sql_mode;

Miałem też wrażenie, że tryb SQL jest rzeczywiście pusty.

simhumileco
źródło