我正在使用最近从 mysql 存储库安装的 mysql,安装在 Ubuntu 14.04 上。我运行的每个查询都会导致以下错误,我无法通过谷歌或此处找到任何讨论此问题的内容。
例如,此(显然仅用于演示目的)查询返回以下内容:
[SQL]选择 *从标签位置
受影响的行数:0时间:0.705秒
[Err] 1055 - ORDER BY 子句的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列 'information_schema。分析。SEQ',它在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容
它返回查询结果很好,但在每个查询上都会抛出错误,这显然会影响我的应用程序中的错误处理。关于如何解决此问题的任何建议?目前相当令人抓狂。
mysqld.cnf(linux)或my.ini(win)中加入一行sql-mode=""
,然后重新启动MySQL服务器。
从MySQL 5.7.5开始,默认SQL模式包括ONLY_FULL_GROUP_BY。(在5.7.5之前,MySQL不会检测功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。
在此处查看文档:http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html
您是否偶然删除了information_schema
或mysql
数据库?这两个数据库/文件永远不会被删除,否则您的数据库将无法正常工作。
你的 Mysql 客户端是导航吗?默认情况下,某些旧版本的 navicat 会在您的 sql 之后发送分析 sql。像这样的分析 sql
SELECT STATE , ROUND(SUM(DURATION),7) , CONCAT(ROUND(SUM(DURATION)/0.000846*100,3), '%')
FROM INFORMATION_SCHEMA.PROFILING
WHERE QUERY_ID=39 GROUP BY STATE ORDER BY SEQ
但是此 sql 对 SQL92.So 无效,您可以考虑关闭 navicat 的此默认行为。