我对 MySQL 5.7 中的 group by 子句更改遇到了一些问题。我不断收到错误,提示我需要修复一些查询才能使其正常运行。我尝试了几种不同的方法,但我发现唯一有效的方法是在服务器上运行以下查询:
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';
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';
这样做可以消除错误并允许我的应用程序运行。
我确实尝试添加:
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
然而,/etc/mysql/my.cfg
这导致了一些问题,因为不再生成自动增量数字,所以所有插入都失败。
现在许多服务器都出现了这种情况,如果任何一台服务器重新启动,那么继续运行查询就会非常麻烦。
有人能帮助我解决这个问题吗?
答案1
要在服务器启动时设置 SQL 模式,请在
--sql-mode="modes"
命令行或sql-mode="modes"
选项文件(如 my.cnf(Unix 操作系统)或 my.ini(Windows))中使用选项。 modes 是用逗号分隔的不同模式的列表。 要明确清除 SQL 模式,请在命令行上使用 --sql-mode="" 或在选项文件中使用 sql-mode="" 将其设置为空字符串。
在您的 中包含引文my.cnf
。