我在尝试禁用SET sql_mode = ''
时意外执行了ONLY_FULL_GROUP_BY
,这会重置当前启用的所有模式。如何恢复默认设置?我在Homestead Vagrant盒子上运行MySQL 5.7.20
。
由于
答案 0 :(得分:4)
查询
SET sql_mode = '';
仅适用于当前连接。
因此,您可以断开连接并重新连接客户端,并且应该恢复默认的sql_mode。
要禁用'ONLY_FULL_GROUP_BY'而不禁用其他sql_mode,可以这样做。
SET SESSION sql_mode = CONCAT(REPLACE(@@sql_mode, ',ONLY_FULL_GROUP_BY', ''));
<强> P.S 强>
请记住,ONLY_FULL_GROUP_BY
在现代MySQL版本中启用了原因,我不建议禁用它。
答案 1 :(得分:1)
对于默认inn 5.7,您应该设置
sql_mode = "ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE,
NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION"
https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html
检查你真正的mysql版本和其他param的subversion
答案 2 :(得分:0)
这一切都四处走动,因为它可能因版本而异。要重置它,您应该使用标准做法:
set global sql_mode=default
set session sql_mode=default
之后,您可以通过以下方式进行检查:
SELECT @@GLOBAL.sql_mode
SELECT @@SESSION.sql_mode