如何查看sql_mode的特定值?


93

sql_modeMySQL中有一些值:

ANSI

IGNORE_SPACE

STRICT_TRANS_TABLES

我如何看到一个特定的价值?该手册说:

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

但是它什么也没显示,只是表中的一个空白字段@@sql_mode作为列名。

Answers:


144

它对您来说只是空白,因为您尚未设置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)

2
谢谢,这有效。但是其中一些具有默认值。我的意思是我想查看默认设置而不设置值。还是不可能?
格林

1
组合模式都记录在这里:dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html。例如,在这里您可以看到ORACLE组合模式包含以下7种模式:dev.mysql.com/doc/refman/5.5/en/…–
Ike Walker

1
“默认的SQL模式为空(未设置模式)。” 从MySQL服务器管理手册页面引用服务器SQL模式。我认为这意味着没有特殊的sql_mode设置为开箱即用。
Mister_Tom 2013年

@IkeWalker,您的意思是说默认情况下(“空白”模式),它等同于好像设置所有PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USERand一样吗?还是您说其中的一些已设置但默认情况下不显示?
Pacerier '16

1
@Pacerier前者是正确的。如果@@ sql_mode为空(您称之为“空白”模式),则设置sql_mode。我不会评论默认的sql_mode,因为这取决于您正在运行的MySQL版本。
艾克·沃克

23

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

SELECT @@GLOBAL.sql_mode;

会话 sql_mode值:

SELECT @@SESSION.sql_mode;

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.