如何在执行SET sql_mode =''后将mysql模式重置为默认值

时间:2017-11-17 16:27:45

标签: mysql homestead

我在尝试禁用SET sql_mode = ''时意外执行了ONLY_FULL_GROUP_BY,这会重置当前启用的所有模式。如何恢复默认设置?我在Homestead Vagrant盒子上运行MySQL 5.7.20

由于

3 个答案:

答案 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