看看下面这个 SQL 语句:
SELECT DISTINCT guid FROM table1 WHERE user=? ORDER BY id DESC
这个 SQL 语句在 MySQL 5.6 以及之前的版本都可以正确执行。但是跑到 MySQL 5.7 上就报什么 ORDER BY 的字段不在 SELECT 的列表中的 SQL 异常。
解决的办法是修改 MySQL 5.7 的 sql_mode 值,去掉 ONLY_FULL_GROUP_BY 这玩意。
可以直接在 my.cnf 配置的 [mysqld] 段增加如下配置并重启 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"