如何在执行 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
我在尝试禁用 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