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

der*_*zay 1 mysql homestead

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

谢谢

Ray*_*and 5

查询

 SET sql_mode = '';
Run Code Online (Sandbox Code Playgroud)

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

要禁用“ONLY_FULL_GROUP_BY”而不禁用其他 sql_mode 可以这样做。

  SET SESSION sql_mode = CONCAT(REPLACE(@@sql_mode, ',ONLY_FULL_GROUP_BY', ''));
Run Code Online (Sandbox Code Playgroud)

ps 请记住,ONLY_FULL_GROUP_BY在现代 MySQL 版本中启用它是有原因的,我不建议禁用它。

  • 我在断开连接之前和之后运行了`SELECT @@sql_mode;`,它确实仅用于当前连接。按照您建议的方式禁用“ONLY_FULL_GROUP_BY”也有效。谢谢 (2认同)

小智 5

到处走动,因为它可能会从版本更改为版本。要重置它,您应该使用标准做法:

set global sql_mode=default
set session sql_mode=default
Run Code Online (Sandbox Code Playgroud)

之后,您可以通过以下方式进行检查:

SELECT @@GLOBAL.sql_mode
SELECT @@SESSION.sql_mode
Run Code Online (Sandbox Code Playgroud)