我意外启用了ONLY_FUL_GROUP_BY模式,如下所示:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
如何禁用它?
我意外启用了ONLY_FUL_GROUP_BY模式,如下所示:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
如何禁用它?
当前回答
如果任何使用Drupal 8的人在mysql 8中遇到这个问题,我通过添加这段代码覆盖默认配置来解决这个问题。
资料来源:https://www.drupal.org/project/drupal/issues/2856270
选项,以防万一:
'init_commands' => array(
'sql_mode' => "SET sql_mode =''"
)
其他回答
On:
Ubuntu 14.04mysql版本14.14 Distrib 5.7.16,适用于Linux(x86_64),使用EditLine包装器
Do:
$ sudo nano /etc/mysql/conf.d/mysql.cnf
复制和粘贴:
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
到文件底部
$ sudo service mysql restart
对于MySql 8,您可以尝试这个。(未在5.7中进行测试。希望它在那里也适用)
首先打开此文件
sudo vi/etc/mysql/my.cnf并将以下代码粘贴在上述文件的末尾
[mysqld]
sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
然后通过运行这个sudo服务mysql restart重新启动mysql
mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> exit;
如果sql_mode上有ANSI,需要注意一点:
等效于REAL_AS_FLOAT、PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE和(从MySQL 5.7.5开始)ONLY_FUL_GROUP_BY。
看见https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi
小心使用
SET sql_mode = ''
这实际上清除了当前启用的所有模式。如果你不想弄乱其他设置,你可以做一个
SELECT @@sql_mode
首先,要获得一个以逗号分隔的启用模式列表,然后将其设置为该列表,而不使用ONLY_FUL_GROUP_BY选项。