Como posso ver o valor específico de sql_mode?

95

Existem alguns sql_modevalores no MySQL:

ANSI,

IGNORE_SPACE,

STRICT_TRANS_TABLESetc

Como posso ver um determinado valor? O manual diz:

Você pode recuperar o modo atual emitindo uma instrução SELECT @@ sql_mode.

Mas ele simplesmente não mostra nada, apenas um campo em branco em uma tabela com o @@sql_modenome da coluna.

Verde
fonte

Respostas:

146

Só está em branco porque você não definiu sql_mode. Se você defini-lo, essa consulta mostrará os detalhes:

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
fonte
2
Obrigado, isso funciona. Mas alguns deles têm seus valores padrão. Eu quis dizer que queria ver os padrões sem definir o valor. Ou não é possível?
Verde de
1
Os modos de combinação estão todos documentados aqui: dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html . Por exemplo, aqui você pode ver quais 7 modos compõem o modo de combinação ORACLE: dev.mysql.com/doc/refman/5.5/en/…
Ike Walker
1
"O modo SQL padrão está vazio (nenhum modo definido)." Citado na página do manual MySQL Server Administration para Server SQL Modes . Eu interpreto isso como significando que nenhum dos sql_mode especiais são definidos fora da caixa.
Mister_Tom
@IkeWalker, Você quer dizer que por padrão (o modo "em branco"), é equivalente a como se todos PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USERe etc não estivessem definidos? Ou você quer dizer que alguns deles estão definidos, mas simplesmente não são mostrados por padrão?
Pacerier
1
@Pacerier o primeiro está correto. Se @@ sql_mode estiver vazio (o modo "em branco" como você o chama), então nenhum sql_mode é definido. Não vou comentar sobre o sql_mode padrão porque isso depende de qual versão do MySQL você está executando.
Ike Walker
24

Você também pode tentar isso para determinar o valor global atual sql_mode:

SELECT @@GLOBAL.sql_mode;

ou valor da sessão sql_mode :

SELECT @@SESSION.sql_mode;

Também tive a sensação de que o modo SQL estava realmente vazio.

simhumileco
fonte