MySQL中SQL Mode的查看与设置详解

MySQL中SQL Mode的查看与设置

MySQL可以运行在不同的模式下,而且可以在不同的场景下运行不同的模式,这主要取决于系统变量 sql_mode 的值。本文主要介绍一下这个值的查看与设置,主要在Mac系统下。

对于每个模式的意义和作用,网上很容易找到,本文不做介绍。

按作用区域和时间可分为3个级别,分别是会话级别,全局级别,配置(永久生效)级别。

会话级别:

查看-

select @@session.sql_mode;

修改-

set @@session.sql_mode='xx_mode'
set session sql_mode='xx_mode'

session均可省略,默认session,仅对当前会话有效

全局级别:

查看-

select @@global.sql_mode;

修改-

set global sql_mode='xx_mode';
set @@global.sql_mode='xx_mode';

需高级权限,仅对下次连接生效,不影响当前会话(亲测过),且MySQL重启后失效,因为MySQL重启时会重新读取配置文件里对应值,如果需永久生效需要修改配置文件里的值。

配置修改(永久生效):

打开 vi /etc/my.cnf

在下面添加

[mysqld]
sql-mode = "xx_mode"

注意:[mysqld]必须加,且sql-mode中间是“-”,而不是下划线。

保存退出,重启服务器,即可永久生效。

因为Mac下安装MySQL没有配置文件,所以需要自己手动添加。

ps

最后额外加一点东西,就是Mac下MySQL的启动、停止、重启等操作。

主要有两种方式,

一是点击”系统偏好设置“对应的MySQL面板,可实现管理。

二是命令行方式。

MySQL相关的执行脚本,常用的主要是下面两个:

/usr/local/mysql/support-files/mysql.server
/usr/local/mysql/bin/mysql

mysql.server是控制服务器的启停等操作。

mysql.server start|stop|restart|status

mysql主要用于连接服务器。

mysql -uroot -p **** -h **** -D **

有些需要sudo权限,且可将相关路径添加到环境变量,可简化书写,至于如何添加是不做介绍了。

知识点扩展:

Strict Mode阐述

根据 mysql5.0以上版本 strict mode (STRICT_TRANS_TABLES) 的限制:

1).不支持对not null字段插入null值

2).不支持对自增长字段插入''值,可插入null值

3).不支持 text 字段有默认值

看下面代码:(第一个字段为自增字段)

$query="insert into demo values('','$firstname','$lastname','$sex')";

上边代码只在非strict模式有效。

Code代码

$query="insert into demo values(NULL,'$firstname','$lastname','$sex')";

上边代码只在strict模式有效。把空值''换成了NULL.

(0)

相关推荐

  • mysql中的sql_mode模式实例详解

    本文实例讲述了mysql中的sql_mode模式.分享给大家供大家参考,具体如下: mysql数据库的中有一个环境变量sql_mode,定义了mysql应该支持的sql语法,数据校验等!我们可以通过以下方式查看当前数据库使用的sql_mode: mysql> select @@sql_mode; +----------------------------------------------------------------+ | @@sql_mode | +------------------

  • 关于MySQL的sql_mode合理设置详解

    MySQL的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入.在生产环境必须将这个值设置为严格模式,所以开发.测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题. 1.sql model 常用来解决下面几类问题: (1) 通过设置sql mode, 可以完成不同严格程度的数据校验,有效地保障数据准备性. (2) 通过设置sql model 为宽松模式,来保证大多数sql符合标准的sql语法

  • MySQL模式 Strict Mode知识点详解

    I. Strict Mode阐述 根据 mysql5.0以上版本 strict mode (STRICT_TRANS_TABLES) 的限制: 1).不支持对not null字段插入null值 2).不支持对自增长字段插入''值,可插入null值 3).不支持 text 字段有默认值 看下面代码:(第一个字段为自增字段) Sql代码 $query="insert into demo values('','$firstname','$lastname','$sex')"; 上边代码只在非

  • Django2 连接MySQL及model测试实例分析

    本文实例讲述了Django2 连接MySQL及model测试.分享给大家供大家参考,具体如下: 参考:https://www.jb51.net/article/176066.htm 新建个应用 manage.py startapp webtest // 新建一个应用用来测试 然后再到该应用下的**init.py**插入代码(防止报错) import pymysql pymysql.install_as_MySQLdb() 然后再去setting.py配置下数据库连接 接着去models.py里添

  • MySQL关于sql_mode解析与设置讲解

    昨晚在往MySQL数据库中插入一组数据时,出错了!数据库无情了给我报了个错误:ERROR 1365(22012):Division by 0:意思是说:你不可以往数据库中插入一个 除数为0的运算的结果.于是乎去谷歌了一番,总算是明白了其中的原因:是因为MySQL的sql_mode 模式限制着一些所谓的'不合法'的操作. 解析 这个sql_mode,简而言之就是:它定义了你MySQL应该支持的sql语法,对数据的校验等等.. 如何查看当前数据库使用的sql_mode: mysql> select

  • MySQL中SQL Mode的查看与设置详解

    MySQL中SQL Mode的查看与设置 MySQL可以运行在不同的模式下,而且可以在不同的场景下运行不同的模式,这主要取决于系统变量 sql_mode 的值.本文主要介绍一下这个值的查看与设置,主要在Mac系统下. 对于每个模式的意义和作用,网上很容易找到,本文不做介绍. 按作用区域和时间可分为3个级别,分别是会话级别,全局级别,配置(永久生效)级别. 会话级别: 查看- select @@session.sql_mode; 修改- set @@session.sql_mode='xx_mod

  • mysql中inner join和left join使用详解

    目录 区别 inner join 场景 inner join 场景 区别 返回不同1.inner join只返回两个表中联结字段相等的行2.left join的数量小于等于左表和右表中的记录数量. 数量不同1.inner join返回包括左表中的所有记录和右表中联结字段相等的记录.2.left join的数量以左表中的记录数量相同 记录属性不同1.inner join不足的记录属性会被直接舍弃2.left join不足的记录属性用NULL填充 inner join 场景 设计两张表: chann

  • CenterOS 中安装Redis及开机启动设置详解

    CenterOS 中安装Redis及开机启动设置详解 从官方下载最新Redis进行安装,官网地址:http://redis.io/download $ wget http://download.redis.io/releases/redis-3.2.3.tar.gz $ tar xzf redis-3.2.3.tar.gz $ cd redis-3.2.3 $ make $ make install Redis启动 RedisServer /path/to/redis.conf Redis关闭(

  • MySQL中使用去重distinct方法的示例详解

    一 distinct 含义:distinct用来查询不重复记录的条数,即distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段 用法注意: 1.distinct[查询字段],必须放在要查询字段的开头,即放在第一个参数: 2.只能在SELECT 语句中使用,不能在 INSERT, DELETE, UPDATE 中使用: 3.DISTINCT 表示对后面的所有参数的拼接取 不重复的记录,即查出的参数拼接每行记录

  • MySQL中你可能忽略的COLLATION实例详解

    前言 MySQL 数据库的字符串类型有 CHAR.VARCHAR.BINARY.BLOB.TEXT.ENUM.SET.不同的类型在业务设计.数据库性能方面的表现完全不同,其中最常使用的是 CHAR.VARCHAR.今天我就带你深入了解字符串类型 CHAR.VARCHAR 的应用. CHAR 和 VARCHAR 的定义 CHAR(N) 用来保存固定长度的字符,N 的范围是 0 ~ 255,请牢记,N 表示的是字符,而不是字节.VARCHAR(N) 用来保存变长字符,N 的范围为 0 ~ 65536

  • MySQL中CHAR和VARCHAR类型演变和详解

    一.演变: MySQL数据库的varchar类型在5.0.3以下的版本中的最大长度限制为255,其数据范围可以是0~255. 在MySQL5.0.3及以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去了3个字节,也就是说,在5.0.3以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以在高版本中使用可变长的varchar来存放,这样就能有效的减少数据库文件的大小. 如果在varchar中写入大于设定的长度,默认情况下会

  • MySQL中常见的六个约束类型详解

    目录 前言 1. not null 2. unique 3. default 4. primary key 自增主键auto_increment 5. foreign key 6. check 总结 前言 在向数据表中插入数据时,有的时候对于插入的数据是有特殊要求的,比如学生成绩不能为空,学生学号不能重复等等,这个时候约束就派上用场了. 约束类型是通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性.这一章我们主要介绍六个常见的MySQL约束类型. 1. not null 保证指定不能

  • MySQL中查询json格式的字段实例详解

    工作开发过程遇到一个需求:需要动态存储客户的姓名.手机号码.身份证.证件类型,意思是可能前端会传一个人或二个人或者三个人的信息是动态的不固定人数的四个字段(姓名.手机号码.身份证.证件类型). 前端页面如下: 我是使用List来接收前端传过来 json,mysql 用 varchar 来保存这个 json 数组 [{ "cardId": "110101199003072316", "cstName": "张双儿1", &quo

  • MySQL中几种常见的嵌套查询详解

    目录 几种常见的嵌套查询——以学员成绩为例 含ANY或ALL关键词的嵌套查询 含IN关键词的嵌套查询 含EXISTS关键词的嵌套查询 [补充]关于IN和EXISTS两个关键词还有两个延伸关键词NOT IN和NOT EXISTS 附:其他使用方法和注意 总结 几种常见的嵌套查询——以学员成绩为例 嵌套查询,也称为子查询,是实际工作中经常用到的一种查询方式.子查询其实就是在已有的查询语句中的where后面再嵌套一层查询语句,也就是把内层查询结果当做外层查询参照的数据表来使用. 在工作中,经常会遇见4

  • Mysql中where与having的区别实例详解

    以一道题来做引子 牛客,SQL30 计算总和 OrderItems表代表订单信息,包括字段:订单号order_num和item_price商品售出价格.quantity商品数量. order_num item_price quantity a1 10 105 a2 1 1100 a3 1 200 a4 2 1121 a5 5 10 a6 1 19 a7 7 5 [问题]编写 SQL 语句,根据订单号聚合,返回订单总价不小于1000 的所有订单号,最后的结果按订单号进行升序排序. 提示:总价 =

随机推荐