在MySQL中可以同时拥有多个sql_mode吗?

时间:2015-08-06 23:23:53

标签: mysql sql database

我正在尝试在MySQL上设置两个sql_modes,但是当我设置第二个时,第一个就是替换:

SET sql_mode=ONLY_FULL_GROUP_BY;

并检查MySQL中当前的sql_mode:

  ------------------
 |SELECT @@sql_mode |
  ------------------
 |ONLY_FULL_GROUP_BY|
  ------------------

当我尝试设置另一种模式时(我也希望得到ONLY_FULL_GROUP_BY)我这样做:

SET sql_mode=PIPES_AS_CONCAT

再次,我检查MySQL中的当前sql_mode,但我注意到只设置了1个sql_mode:

  ------------------
 |SELECT @@sql_mode |
  ------------------
 |PIPES_AS_CONCAT   |
  ------------------

我想得到:

  ------------------
 |SELECT @@sql_mode |
  ------------------
 |ONLY_FULL_GROUP_BY|
  ------------------
 |PIPES_AS_CONCAT   |
  ------------------

有什么想法发生的事吗?

我还会检查How can I see the specific value of the sql_mode?SQL Mode

1 个答案:

答案 0 :(得分:2)

您需要将它们都放在以,分隔的引号中。否则,您将在运行第二个set命令时覆盖该设置。

mysql> set sql_mode="PIPES_AS_CONCAT,ONLY_FULL_GROUP_BY";
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%sql_mode%';
+---------------+------------------------------------+
| Variable_name | Value                              |
+---------------+------------------------------------+
| sql_mode      | PIPES_AS_CONCAT,ONLY_FULL_GROUP_BY |
+---------------+------------------------------------+
1 row in set (0.00 sec)