如何查看sql_mode的具体值?

时间:2012-05-14 21:20:18

标签: mysql

MySQL中有一些sql_mode值:

ANSI

IGNORE_SPACE

STRICT_TRANS_TABLES

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

  

您可以通过发出SELECT @@ sql_mode来检索当前模式   言。

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

3 个答案:

答案 0 :(得分:111)

这对你来说只是空白,因为你还没有设置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)

答案 1 :(得分:11)

您也可以尝试此操作来确定当前的全局 sql_mode值:

SELECT @@GLOBAL.sql_mode;

会话 sql_mode值:

SELECT @@SESSION.sql_mode;

我也感觉 SQL模式确实是空的。

答案 2 :(得分:1)

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

然后使用这个:

SELECT @@sql_mode; or SELECT @@GLOBAL.sql_mode;

输出如下:

STRICT_TRANS_TABLES、STRICT_ALL_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、TRADITIONAL、NO_AUTO_CREATE_USER、NO_ENGINE_SUB

你也可以这样设置sql模式:

SET GLOBAL sql_mode=TRADITIONAL;