转自: http://blog.csdn.net/kumu_linux/article/details/8185912

sql_mode的系统变量可以调控MySQL的SQL模式

任何一个客户端可以在不影响其它客户端的情况下改变MySQL服务器对自己的反应

如果想在MySQL启动时设置SQL模式,可以在mysql配置文件中添加sql_mode选项

sql-mode=”TRADITIONAL”

如果在运行过程中修改SQL模式,则可以使用如下命令

mysql>set sql_mode="TRADITIONAL";

Client1

mysql> show variables like "sql_mode";

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| sql_mode      |      |

+---------------+-------+

1 row in set (0.00 sec)

mysql> set sql_mode="TRADITIONAL";

Query OK, 0 rows affected(0.23 sec)

mysql>show variables like "sql_mode";

+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------+

|Variable_name     |                                                                Value                                                                                                                                               |

+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------+

|sql_mode  |STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION|

+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------+

1 rowin set (0.00 sec)

mysql>

Client2

Client1已经修改了SQL模式,但是Client2的SQL模式没有改变,这就说明客户端之间的模式修改是互相不影响的

mysql>show variables like "sql_mode";

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| sql_mode      |      |

+---------------+-------+

1 row in set (0.00 sec)

mysql>

设置全局变量(设置全局变量设置,需要加上GLOBAL关键字,需要SUPER权限)

mysql> set globalsql_mode="traditional";

Query OK, 0 rows affected(0.02 sec)

select @@session.sql_mode

--》查看当前会话sql模式

select @@GLOBAL.sql_mode

--》查看系统会话sql模式

设置全局变量后,新连接的客户端默认的就是全局的SQL模式

转自 http://blog.csdn.net/wyzxg/article/details/8787878

author:skate

time:2013/04/11

mysql的sql_mode合理设置

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

sql_mode常用值如下:

ONLY_FULL_GROUP_BY:

对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中

NO_AUTO_VALUE_ON_ZERO:

该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户 希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。

STRICT_TRANS_TABLES:

在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制

NO_ZERO_IN_DATE:

在严格模式下,不允许日期和月份为零

NO_ZERO_DATE:

设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

ERROR_FOR_DIVISION_BY_ZERO:

在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如 果未给出该模式,那么数据被零除时MySQL返回NULL

NO_AUTO_CREATE_USER:

禁止GRANT创建密码为空的用户

NO_ENGINE_SUBSTITUTION:

如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常

PIPES_AS_CONCAT:

将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似

ANSI_QUOTES:

启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

ORACLE的sql_mode设置等同:PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER.

如果使用mysql,为了继续保留大家使用oracle的习惯,可以对mysql的sql_mode设置如下:

在my.cnf添加如下配置

[mysqld]

sql_mode='ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,

ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES'

mysql的服务器在什么模式下工作_MySQL服务器的SQL模式 (转)相关推荐

  1. Qt Creator在编辑模式下工作

    Qt Creator在编辑模式下工作 在编辑模式下工作 使用编辑器工具栏 在打开的文件和符号之间导航 选择解析上下文 更改文字编码 选择行尾样式 分割编辑器视图 使用书签 转到符号定义或声明 重新解析 ...

  2. linux 返回非法指令,linux – ARM Cortex A7在内核模式下返回PMCCNTR = 0,在用户模式下返回非法指令(即使在PMUSERENR = 1之后)...

    我想在Raspberry Pi 2上读取循环计数寄存器(PMCCNTR),它有一个ARM Cortex A7内核.我为它编译了一个内核模块,如下所示: #include #include int in ...

  3. 在批处理模式下使用mysql_3.5 在批处理模式下使用mysql

    在前面的章节中,你交互式地使用mysql输入查询而且查看结果.你也能够以批模式执行mysql.为了做到这些.把你想要执行的命令放在一个文件里,然后告诉mysql从文件读取它的输入: shell> ...

  4. linux服务器的功能需求,Linux下的各种服务器技术及配置 (毕业论文).doc

    Linux下的各种服务器技术及配置 (毕业论文) PAGE 26 PAGE 27 Linux下的各种服务器技术及配置 姓 名: 学 号: 指导老师: 系 名: 专 业: 班 级: . 二00一二年 十 ...

  5. ahci模式下无法启动Linux,电脑AHCI模式无法开启是怎么回事?

    安装之前就要开启ahci,然后安装系统,如果在ide模式下安装了,是不能随意的改到ahci的!你的情况只能重装系统解决了!看看你的主板,有没有第三方芯片的sata口,如果有,你把第三方芯片的sata口 ...

  6. vim介绍,vim颜色显示,vim一般模式下移动光标,vim一般模式下的复制、剪切和粘贴...

    2019独角兽企业重金招聘Python工程师标准>>> vim介绍 vim是vi的升级版,相较于vi,会显示颜色. 如果系统没有vim工具,需要安装:# yum install -y ...

  7. wincc服务器系统,什么情况下用wincc服务器与客户端

    什么情况下用wincc服务器与客户端 内容精选 换一换 当创建文件系统后,您需要使用云服务器来挂载该文件系统,以实现多个云服务器共享使用文件系统的目的.CIFS类型的文件系统不支持使用Linux操作系 ...

  8. 【RenPy】关于ADV模式下say语句输出在NVL模式中文本框的问题

    问题描述: define narrator = nvl_narratorlabel start:narrator """内容1......内容2......内容3.... ...

  9. 命令行界面命令模式及相互切换、交换机命令行操作模式及模式间的切换过程、命令行界面基本功能、命令的快捷键功能、交换机基本配置命令、交换机特权模式下基本命令、交换机全局配置模式下基本命令、

    1.命令行界面命令模式及相互切换   锐捷交换机命令行管理界面分成若干不同的模式,用户当前所处的命令模式决定了可以使用的命令,不可跨模式执行命令.以下给出三种基本模式.   用户模式(User EXE ...

最新文章

  1. 显示Flash时控制其的宽度与高度
  2. SM04在线用户管理
  3. 是银弹吗?业务基线方法论
  4. java join 异常_Java:守护进程:thread.join()没有完成,当在一个线程中抛出异常时...
  5. 腾讯视频真实下载地址_腾讯视频如何多倍速播放视频
  6. 【经验】在CSS中定义超链接样式a:link、a:visited、a:hover、a:active的顺序
  7. Triumph X发布著名摄影师Kim Joong-man首个NFT系列
  8. aspx 修改了样式但是在点击按钮后被刷新_135编辑器使用教程|动画按钮到底在哪里啊?...
  9. mysql 常用管理命令
  10. A non well formed numeric value encountered
  11. 汽车CAN总线-基础
  12. python 数字转换为汉字大写
  13. apache基金会开源项目简介
  14. Vue Cli+高德API实现模糊搜索+返回坐标及信息
  15. 教程 | 用安卓手机搭建 web 服务器(二)—— Nginx 安装配置
  16. 人生若只如初见,何事秋风悲画扇。
  17. python对mp3格式文件标题专辑封面等信息修改
  18. Android 线程与消息 机制 15问15答
  19. 数字人民币概论、特征、架构介绍
  20. Java程序调用MATLAB接口

热门文章

  1. MATLAB实现实时录音,语音采集与读写用matlab实现录音以及语谱图的绘制.pdf
  2. eclipse创建Maven的动态web工程
  3. 【十九】require和include的区别
  4. 【leetcode】Word Break(python)
  5. 业务逻辑中的测试总结(二)----业务与数据库交互需求的测试分解
  6. UNIX环境高级编程 文件I/O
  7. Win7启动Oracle出错
  8. 深入出不来nodejs源码-V8引擎初探
  9. 数据库 分库 分表 分区
  10. 去培训机构参加IT培训值不值