mysql - MySQL 中可以同时有超过 1 个 sql_mode 吗?

标签 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

最佳答案

您需要将它们放在引号中,并用 , 分隔。否则,当您运行第二个 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)

关于mysql - MySQL 中可以同时有超过 1 个 sql_mode 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31867363/

相关文章:

mysql - 如果某个字段的值等于某个值,则在更新另一个字段时更新该字段的值

php - 从下到上获取 PHP 变量

Python scraper如何添加mysql插入

c# - Oracle 数据库 TNS 键 'data source' 的值长度超出了它的限制 '128'

php - 您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 '' 附近使用的正确语法

java - 无法将数据从 JTable 插入数据库

php - Laravel: Eloquent 地返回一个我无法迭代的对象

mysql - 如何从 programData 文件恢复 mysql innoDb 数据库

android - 通过从数据库填充的 ListView 进行搜索

php - Smarty:从数据库返回数据