查看当前的 SQL_MODE设置 SQL_MODE设置 SQL_MODE 是通过 SET 关键词进行的,其他参数值也可通过该关键词进行修改。可通过 SHOW VARIABLES 查看到所有可用配置项。 设置系统变量时,可指定所设置的作用域,也可通过 @@ 前缀来获取变量,甚至也可以没有任何前缀,以下写法都是合法的: SET SESSION sql_mode = 'TRADITIONAL';
SET LOCAL sql_mode = 'TRADITIONAL';
SET @@SESSION.sql_mode = 'TRADITIONAL';
SET @@LOCAL.sql_mode = 'TRADITIONAL';
SET @@sql_mode = 'TRADITIONAL';
SET sql_mode = 'TRADITIONAL'; 可用的 SQL 模式可在官方文档中查询到 5.1.10 Server SQL Modes。 系统变量的作用域系统的这些配置项有其作用项,是分开进行管理的。 其中, GLOBAL 类型会对每次连接生效。SESSION 类型只对当前连接生效,LOCAL 关键词等效。
两者皆为运行时变量,可随时修改。 PERSIST 类型不影响运行时,会将设置结果写入 mysqld-auto.cnf 这个 MySQL 配置文件。
所以,设置时可通过在 SET 后加相应作用域的修饰词,像这样 SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION'; 也可以通过 @@ 加上作用域进行变量访问的方式: SET @@GLOBAL.sql_mode = 'NO_ENGINE_SUBSTITUTION'; 两者是等效的。 作用域缺省情况下为 SESSION 类型,即只对当前连接生效。 SET @@sql_mode = 'NO_ENGINE_SUBSTITUTION'; MySQL 中的配置文件下面表格来自官方文档 Table 4.2 Option Files Read on Unix and Unix-Like Systems 部分。 /etc/my.cnf | 全局配置项 | /etc/mysql/my.cnf | 全局配置项 | SYSCONFDIR/my.cnf | 全局配置项 | $MYSQL_HOME/my.cnf | 服务器相关配置项,有于服务端 | defaults-extra-file | 如果存在该文件的话,通过--defaults-extra-file 参数启用程序时会读取该配置项 | ~/.my.cnf | 用户配置项 | ~/.mylogin.cnf | 用户登录路径相关,用于客户端 | DATADIR/mysqld-auto.cnf | SET PERSIST 或 SE PERSIST_ONLY 设置的系统参数会保存到该文件 |
相交资源 |