MySQL参数之sql_mode详解

操作系统:Centos 6.X

数据库版本:MySQL 5.5/5.6 && MariaDB10.0X

一、SQL Mode简介
 简单说就是MySQL服务器运行在不同的SQL模式下,并能针对不同的客户端用不同的方式调用这些模式;
 具体表现在对SQL语法的检查上,Oracle的语法基本都是SQL99
二、如何使用sql_mode
0).MaraiDB模式没有做sql_mode限制
MariaDB [(none)]> show global variables like 'sql_mode';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sql_mode      |       |
+---------------+-------+
1 row in set (0.00 sec)
三、如何验证?
1).插入数据
MariaDB [(none)]> use test
MariaDB [test]> create table t1 (name char(3));
MariaDB [test]> insert into t1 values('Jacson'); 
Query OK, 1 row affected, 1 warning (0.30 sec)
MariaDB [test]> insert into t1 values('Bai');       
Query OK, 1 row affected (0.12 sec)
2).验证插入结果:
MariaDB [test]> select * from t1;
+------+
| name |
+------+
| Jac  |
| Bai  |
+------+
2 rows in set (0.00 sec)
3).启用语法严格限制:
MariaDB [test]> set session sql_mode='STRICT_TRANS_TABLES';
MariaDB [test]> insert into t1 values('Jacson');
ERROR 1406 (22001): Data too long for column 'name' at row 1
、常用sql_mode定义值
1.ANSI
2.STRICT_TRANS_TABLES
3.TRADITIONAL
、提升MySQL的可移植
根据企业需求吧
常用为Oracle之间的数据异构
PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, ORACLE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
六、指定对应的值
将mysq_mode定义的值加入my.cnf
[mysqld]
sql_mode=ANSI,STRICT_TRANS_TABLES,TRADITIONAL,PIPES_AS_CONCAT,ANSI_QUOTES, IGNORE_SPACE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS, NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER

备注sql_mode后面可以加''也可以不加;

参考链接:https://mariadb.com/kb/en/mariadb/sql_mode/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值