查看当前的 SQL_MODE

SELECT @@sql_mode
SELECT @@sql_mode 的执行结果
mysql> SELECT @@sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@sql_mode |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

设置 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

系统变量的作用域

There are two scopes in which system variables exist. Global variables affect the overall operation of the server. Session variables affect its operation for individual client connections. A given system variable can have both a global and a session value.

--5.1.9 Using System Variables

系统的这些配置项有其作用项,是分开进行管理的。

其中,

  • 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 PERSISTSE PERSIST_ONLY 设置的系统参数会保存到该文件

相交资源

SQL_MODE 的设置的更多相关文章

  1. mysql的sql_mode合理设置

    mysql的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入.在生产环境必须将这个值设置为严格模式,所以 ...

  2. (转)mysql的sql_mode合理设置

    mysql的sql_mode合理设置 目录          http://xstarcd.github.io/wiki/MySQL/MySQL-sql-mode.html http://dev.my ...

  3. mysql5.7 版本中 timestamp 不能为零日期 以及sql_mode合理设置

    ---恢复内容开始--- 摘要: mysql5.7版本相比较之前的版本有很多的特性的增加以及默认配置的改变,在使用中难免会遇到与之前的使用习惯或者项目需求不符的情况.就需要调整相应的变量的值,比如sq ...

  4. MySQL不容忽视SQL_MODE的设置

    CREATE DATABASE db_test; CREATE TABLE `tb1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ...

  5. mysql SQL_MODE设置

    1.1.   SQL_MODE设置 在生产环境中强烈建议将这个值设置为严格模式,这样有些问题可以在数据库的设计和开发阶段就能实现,而如果在生产环境下运行数据库后发现这类问题,那么修改的代价将变得十分巨 ...

  6. MySQL数据类型:SQL_MODE设置不容忽视

    [IT168 技术]SQL_MODE可能是比较容易让开发人员和DBA忽略的一个变量,默认为空.SQL_MODE的设置其实是比较冒险的一种设置,因为在这种设置下可以允许一些非法操作,比如可以将NULL插 ...

  7. 升级 mysql5.6 配置文件my.cnf sql_mode 解析与设置问题

    sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入.在生产环境必须将这个值设置为严格模式,所以开发.测试环境的数据库也必须要设置,这 ...

  8. 设置 sql_mode

    MySQL 的 sql_mode 合理设置 sql_mode 是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入.在生产环境必须将这个值设置为严格模 ...

  9. MySQL的sql_mode模式说明及设置

    MySQL的sql_mode模式说明及设置 MySQL的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入 ...

随机推荐

  1. 【分享】利用Apache的Htaccess Files命令限制訪问文件类型,Files正则

    假设你在你的模板目录中有非常多PSD HTML模板,那么用接下来这个htaccess文件能够保护限制訪问: 文件D:\WebSite\ZBPHP.COM\www\Tpl\.htaccess 所有源代码 ...

  2. cocos2d-x 3.0 touch事件官方解释

    官方解释 http://www.cocos2d-x.org/docs/manual/framework/native/input/event-dispatcher/zh#_1

  3. 在vs2005中添加lib库的方法

    方法一:在用到lib的地方加上  //强烈推荐这种方法.#pragma    comment(lib,"libname.lib") 方法二:     点击菜单命令 “项目/属性”, ...

  4. iOS之Prefix.pch

    本文转载至 http://blog.csdn.net/lvxiangan/article/details/21325093   Prefix.pch的作用和用法 Hello World_Prefix. ...

  5. XMU C语言程序设计实践(5)

    •       使用动态链表完成一个简单的商品库存信息管理系统. •       商品信息包括如下字段:商品号.商品名称.商品库存 •       函数 create:接收用户输入的商品号和商品名称的 ...

  6. Delphi通过POST传递参数给PHP

    Delphi代码 ******************************************************************************************* ...

  7. css3某些特性

    在下列情况下,建议使用opacity属性而不是rgba()函数 1.实现多种颜色(元素)的半透明效果.使用opacity属性,不仅背景颜色,就连文本颜色.边框颜色都会变透明. 2.在不知道颜色的情况下 ...

  8. SDUT OJ 2892 A (字典树问题-输出出现次数最多的字符串的出现次数,60ms卡时间,指针+最后运行完释放内存)

    A Time Limit: 60ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 给出n(1<= n && n <= 2*10^6)个字 ...

  9. jQuery插件之ajaxFileUpload API文档

    ajaxFileUpload是一个异步上传文件的jQuery插件. 语法:$.ajaxFileUpload([options]) options参数说明: 1.url  上传处理程序地址. 2,fil ...

  10. vi编辑器设置行号可见

    vi 设置行号 需要切换到命令模式下,输入set number :set number 按下回车即可