在使用 MySQL 时,经常会遇到需要修改 SQL_MODE 设置的情况。此模式控制一系列 SQL 行为和解析器配置,影响数据验证、事务处理等因素。
设置多种模式的语法使用SET命令的SQL_MODE是正确的:
SET GLOBAL SQL_MODE='NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLE','NO_AUTO_CREATE_USER','NO_ENGINE_SUBSTITUTION'
当遇到使用不同用户使用 UNC 值更新数据库等场景时,为 NO_BACKSLASH_ESCAPES 设置全局模式是有意义的,因为它可以确保所有用户都受到影响,无论其会话设置如何。
不幸的是,使用 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中文网其他相关文章!