¿Cómo puedo ver el valor específico de sql_mode?


94

Hay algunos sql_modevalores en MySQL:

ANSI,

IGNORE_SPACE,

STRICT_TRANS_TABLESetc.

¿Cómo puedo ver un valor en particular? El manual dice:

Puede recuperar el modo actual emitiendo una instrucción SELECT @@ sql_mode.

Pero simplemente no muestra nada, solo un campo en blanco en una tabla con @@sql_modeun nombre de columna.

Respuestas:


144

Solo está en blanco para usted porque no ha configurado sql_mode. Si lo configura, esa consulta le mostrará los detalles:

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
Gracias, esto funciona. Pero algunos de ellos tienen sus valores predeterminados. Quise decir que quería ver los valores predeterminados sin establecer el valor. ¿O no es posible?
Verde

1
Los modos de combinación están todos documentados aquí: dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html . Por ejemplo, aquí se puede ver cuales 7 modos comprenden el modo de combinación de ORACLE: dev.mysql.com/doc/refman/5.5/en/...
Ike Walker

1
"El modo SQL predeterminado está vacío (no hay modos establecidos)". Citado de la página del manual de administración del servidor MySQL para los modos SQL del servidor . Interpreto que eso significa que ninguno de los sql_mode especiales está listo para usar.
Mister_Tom

@IkeWalker, ¿Quiere decir que, de forma predeterminada (el modo "en blanco"), es equivalente a que no todos PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USERy etc. no estuvieran configurados? ¿O quiere decir que algunos de ellos están configurados pero simplemente no se muestran de forma predeterminada?
Pacerier

1
@Pacerier el primero es correcto. Si @@ sql_mode está vacío (el modo "en blanco" como lo llama), entonces no se establece sql_mode. No comentaré sobre el sql_mode predeterminado porque eso depende de la versión de MySQL que esté ejecutando.
Ike Walker

23

También puede probar esto para determinar el valor global actual sql_mode:

SELECT @@GLOBAL.sql_mode;

o valor de la sesión sql_mode :

SELECT @@SESSION.sql_mode;

También tuve la sensación de que el modo SQL estaba vacío.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.