【发布时间】:2012-05-14 21:20:17
【问题描述】:
MySQL 中有一些sql_mode 值:
ANSI,
IGNORE_SPACE,
STRICT_TRANS_TABLES等
我怎样才能看到一个特定的值?手册说:
您可以通过发出 SELECT @@sql_mode 来检索当前模式 声明。
但它什么也不显示,只是表格中的一个空白字段,以@@sql_mode 作为列名。
【问题讨论】:
标签: mysql
MySQL 中有一些sql_mode 值:
ANSI,
IGNORE_SPACE,
STRICT_TRANS_TABLES等
我怎样才能看到一个特定的值?手册说:
您可以通过发出 SELECT @@sql_mode 来检索当前模式 声明。
但它什么也不显示,只是表格中的一个空白字段,以@@sql_mode 作为列名。
【问题讨论】:
标签: mysql
它对你来说只是空白,因为你没有设置 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)
【讨论】:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER等都不设置?还是您的意思是其中一些已设置但默认情况下根本不显示?
你也可以试试这个来确定当前的全局sql_mode值:
SELECT @@GLOBAL.sql_mode;
或会话 sql_mode值:
SELECT @@SESSION.sql_mode;
我也有感觉,SQL模式确实是空的。
【讨论】:
您需要先使用登录到您的 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;
【讨论】: