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

问题描述 投票:1回答:3

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

谢谢

mysql homestead
3个回答
4
投票

查询

 SET sql_mode = '';

仅适用于当前连接。 因此,您可以断开连接并重新连接客户端,并且应该恢复默认的sql_mode。

要禁用'ONLY_FULL_GROUP_BY'而不禁用其他sql_mode,可以这样做。

  SET SESSION sql_mode = CONCAT(REPLACE(@@sql_mode, ',ONLY_FULL_GROUP_BY', ''));

请注意,ONLY_FULL_GROUP_BY在现代MySQL版本中启用了一个原因,我不建议禁用它。


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


0
投票

这一切都在四处走动,因为它可能会因版本而异。要重置它,您应该使用标准做法:

set global sql_mode=default
set session sql_mode=default

之后你可以通过以下方式检查:

SELECT @@GLOBAL.sql_mode
SELECT @@SESSION.sql_mode
© www.soinside.com 2019 - 2024. All rights reserved.