版本:Plesk Onyx v17.8.11_build1708180301.19 操作系统:Ubuntu 16.04.4 LTS
在我的日志中出现此错误:
AH01071:收到错误'PHP消息:PHP致命错误:未捕获异常 带有消息'SQLSTATE [42000]的'PDOException':语法错误或访问 违规:1055 SELECT列表的表达式#7不在GROUP BY子句中 并包含非聚合列'base.count_traffic.type' 在功能上不依赖于GROUP BY子句中的列;这是 与
中的sql_mode = only_full_group_by'不兼容
mysql -V - > mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper
SQL_MODE设置为:NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
在另一台服务器上的相同设置和相同的Pleask版本都在运行,但就此而言,没有!
答案 0 :(得分:0)
这与MySQL中的sql_mode行为有关。您需要在全局和会话中更改此参数,然后删除only_full_group_by
:
SET GLOBAl sql_mode = 'NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
在会议上:
SET session sql_mode = 'NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
请注意,对于数据库中的现有连接,这不会产生任何影响。该配置仅适用于新连接。如果需要,您可以编辑my.cnf
并重新启动数据库。这是一个例子:
[mysqld]
sql-mode='NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'