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

How to reset mysql modes to default after doing SET sql_mode = ''

我在尝试禁用 ONLY_FULL_GROUP_BY 时不小心做了 SET sql_mode = '',这会重置当前启用的所有模式。我怎样才能恢复到默认设置?我在 Homestead Vagrant 盒子上 运行 MySQL 5.7.20

谢谢

对于 default 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 版本和其他参数的颠覆

查询

 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 请记住,在现代 MySQL 版本中启用 ONLY_FULL_GROUP_BY 是有原因的,我不建议禁用它。

都是走来走去的,因为可能会随着版本的不同而变化。要重置它,您应该使用标准做法:

set global sql_mode=default
set session sql_mode=default

之后您可以通过以下方式查看:

SELECT @@GLOBAL.sql_mode
SELECT @@SESSION.sql_mode