如何查看sql_mode的具体值?

Gre*_*een 75 mysql

sql_modeMySQL中有一些值:

ANSI,

IGNORE_SPACE,

STRICT_TRANS_TABLES等等

我怎样才能看到一个特定的价值?手册说:

您可以通过发出SELECT @@ sql_mode语句来检索当前模式.

但它只显示任何内容,只是表中的一个空白字段@@sql_mode作为列名.

Ike*_*ker 121

它只是空白,因为你没有设置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)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这个有效.但其中一些有默认值.我的意思是我想在不设置值的情况下查看默认值.或者它不可能? (2认同)

sim*_*eco 16

您也可以尝试这个来确定当前的全局 sql_mode值:

SELECT @@GLOBAL.sql_mode;
Run Code Online (Sandbox Code Playgroud)

会话 sql_mode值:

SELECT @@SESSION.sql_mode;
Run Code Online (Sandbox Code Playgroud)

我也觉得SQL模式确实是空的.


小智 10

您需要首先使用登录到您的 mysql 终端 mysql -u username -p password

然后使用这个:

SELECT @@sql_mode; or SELECT @@GLOBAL.sql_mode;
Run Code Online (Sandbox Code Playgroud)

输出将是这样的:

STRICT_TRANS_TABLES、STRICT_ALL_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、传统、NO_AUTO_CREATE_USER、NO_ENGINE_SUB

您还可以通过以下方式设置 sql 模式:

SET GLOBAL sql_mode=TRADITIONAL;
Run Code Online (Sandbox Code Playgroud)