您的位置:首页 > 数据库 > MySQL

MySQL参数之sql_mode详解

2015-06-29 13:48 609 查看
操作系统: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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: