首页 >数据库 >mysql教程 >如何在MySQL中永久设置全局SQL_MODE?

如何在MySQL中永久设置全局SQL_MODE?

Patricia Arquette
Patricia Arquette原创
2024-12-01 17:00:12695浏览

How to Permanently Set Global SQL_MODE in MySQL?

在 MySQL 中设置全局 SQL_MODE:指南

在使用 MySQL 时,经常会遇到需要修改 SQL_MODE 设置的情况。此模式控制一系列 SQL 行为和解析器配置,影响数据验证、事务处理等因素。

命令结构正确吗?

设置多种模式的语法使用SET命令的SQL_MODE是正确的:

SET GLOBAL SQL_MODE='NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLE','NO_AUTO_CREATE_USER','NO_ENGINE_SUBSTITUTION'

Session和Global的优点模式

  • 会话模式: 仅影响当前会话,并在会话终止时重置。非常适合临时或特定于用户的 SQL_MODE 设置。
  • 全局模式: 影响所有后续会话,直到修改为止。适合适用于所有用户的系统范围内的永久配置。

全局模式与会话模式

当遇到使用不同用户使用 UNC 值更新数据库等场景时,为 NO_BACKSLASH_ESCAPES 设置全局模式是有意义的,因为它可以确保所有用户都受到影响,无论其会话设置如何。

设置全局SQL_MODE 永久

不幸的是,使用 SET 直接修改全局设置并不持久,并且会在 MySQL 重启后重置。要使更改永久生效,请在配置文件 (/etc/mysql/my.cnf) 中设置模式:

[mysqld]
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

对于较新的 MySQL 版本(例如 5.7.8 ),请使用以下语法:

[mysqld]
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"

结论

对于影响所有用户的系统范围的持久 SQL_MODE 设置,设置一个全局的模式是首选方法。应在配置文件中进行永久性更改,确保所需的 SQL 行为在会话之间保持一致。

以上是如何在MySQL中永久设置全局SQL_MODE?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn