Wie kann ich den spezifischen Wert des sql_mode sehen?

85

sql_modeIn MySQL gibt es einige Werte:

ANSI,

IGNORE_SPACE,

STRICT_TRANS_TABLES, etc

Wie kann ich den einen bestimmten Wert sehen? Das Handbuch sagt:

Sie können den aktuellen Modus abrufen, indem Sie eine SELECT @@ sql_mode-Anweisung ausgeben.

Es wird jedoch nur nichts angezeigt, nur ein leeres Feld in einer Tabelle mit @@sql_modeeinem Spaltennamen.

Grün
quelle

Antworten:

138

Es ist nur leer für Sie, weil Sie den sql_mode nicht festgelegt haben. Wenn Sie es festlegen, zeigt Ihnen diese Abfrage die Details:

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
quelle
2
Danke, das funktioniert. Einige von ihnen haben jedoch ihre Standardwerte. Ich wollte die Standardeinstellungen anzeigen, ohne den Wert festzulegen. Oder ist es nicht möglich?
Grün
1
Die Kombinationsmodi sind alle hier dokumentiert: dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html . Hier können Sie beispielsweise sehen, welche 7 Modi den ORACLE-Kombinationsmodus umfassen: dev.mysql.com/doc/refman/5.5/en/…
Ike Walker
1
"Der Standard-SQL-Modus ist leer (keine Modi festgelegt)." Zitiert aus der Handbuchseite zur MySQL Server-Verwaltung für Server-SQL-Modi . Ich interpretiere das so, dass keiner der speziellen sql_mode standardmäßig festgelegt ist.
Mister_Tom
@IkeWalker, Wollen Sie damit sagen, dass es standardmäßig (der "leere" Modus) äquivalent dazu ist, als ob nicht alle PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USERund usw. nicht gesetzt wären ? Oder meinst du damit, dass einige von ihnen festgelegt sind, aber standardmäßig nicht angezeigt werden?
Pacerier
1
@ Pacerier Ersteres ist richtig. Wenn @@ sql_mode leer ist (der "leere" Modus, wie Sie ihn nennen), wird kein sql_mode festgelegt. Ich werde den Standard-sql_mode nicht kommentieren, da dies davon abhängt, welche Version von MySQL Sie ausführen.
Ike Walker
21

Sie können dies auch versuchen, um den aktuellen globalen sql_mode Wert zu ermitteln :

SELECT @@GLOBAL.sql_mode;

oder Sitzungswert sql_mode :

SELECT @@SESSION.sql_mode;

Ich hatte auch das Gefühl, dass der SQL-Modus tatsächlich leer war.

simhumileco
quelle