MySQL 5.7.8rc Ubuntu 14.04
我修改了 my.cnf 以添加此行:
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 已重新启动。
mysql> 选择 @@sql_mode;返回: STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
在我已退出并重新启动的 SQL 客户端(Navicat)中,选择该连接上的 @@sql_mode 也会返回上述内容。
但是,我仍然收到此错误:
MySQL 5.7 无法更新目标:在没有 GROUP BY 的聚合查询中,这与 sql_mode=only_full_group_by 不兼容
我不明白这是怎么可能的。
答案1
经过几个小时的思考、重启等,我找到了唯一的解决方案(用一种行之有效的方法把垃圾扔到墙上,看看它是否粘住)是导出数据库架构和数据(我分别做了这些,这可能没关系),删除数据库,重新创建数据库,然后重新导入数据。现在我没有收到任何投诉。是的,我验证了新架构是相同的。
知道实际情况确实会很好,因为当当前连接表明某种模式明确不是已启用,但会抛出错误,表明该模式是启用,嗯,如果没有合理的解释,这相当令人不安。