zoukankan      html  css  js  c++  java
  • Mysql的sql_mode

    (一) 基本介绍

    set sql_mode="",即强制不设定MySql模式(如不作输入检测、错误提示、语法模式检查等)应该能提高性能,但有如下问题: 

    如果插入了不合适数据(错误类型或超常),mysql会将数据设为“最好的可能数据”而不报错,如: 

    /数字 设为:0/可能最小值/可能最大值 

    /字符串 设为:空串/能够存储的最大容量字符串 

    /表达式 设为:返回一个可用值(1/0-null) 

    所以,解决办法是:所有列都要采用默认值,这对性能也好。 

    当然,如果你特别喜欢sqlserver的模式,也可以设置为sql_mod="sqlserver"(好像是这么写的),这样mysql就按sqlserver的方式运作了,建议不要如此。

    (二) 常见方式

    mysql可以运行在不同sql mode模式下面,sql mode模式定义了mysql应该支持的sql语法,数据校验等! 

    查看默认的sql mode模式: 

    select @@sql_mode;

    我的数据库是: 

    STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    在此模式下面,如果插入的数据的长度大于定义的长度,那么就会报错! 

    set session sql_mode='REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI';

    在这种模式下面:插入的数据的长度大于定义的时候,就会截取,并警告,但是可以插入进去 

    session表示只在本次中有效 

    global:表示在本次连接中不生效,而对于新的连接就生效 

    启用NO_BACKSLASH_ESCAPES模式,使反斜线成为普通字符,在导入数据时候,如果数据中有反斜线,启用这个模式是个不错的选择   

    启用PIPES_AS_CNCAT模式,将||看成是普通字符串

    sql mode值  说明

    ANSI 

    'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE和ANSI组合',

    这种模式使语法   和行为更   符合标准的sql

    STRICT_TRANS_TABLES          使用与事务和非事务表,严格模式 

    TRADITIONAL               也是严格模式,对于插入不正确的值给出错误而不是警告。用在事务时,只要发生错误就立即回滚

    (三) 修改sql_mode 解决问题

    今天安装了个mysql5.0,拿了一个很久之前网上下的程序检查一下是否工作正常.

    发现以前的程序居然不能正常运行,提示信息如下:

    Database error: Invalid SQL: INSERT INTO Survey_UserHistory(userId,jobId,type,action,startTime,endTime) VALUES(’17′,”,’User’,'Login’,”,’2008-11-23 14:33:56′)
    
    MySQL error: 1366 (Incorrect integer value: ” for column ‘jobId’ at row 1)

    Session halted.

    第一时间的反应是跟mysql5.0新加的sql-mode有关系,因为前一阵子刚刚看过手册.果然,作了如下更改后就不再提示了.

    修改 my.ini 文件.

    # Set the SQL mode to strict
    sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

    改为:

    # Set the SQL mode to strict
    sql-mode=”NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
  • 相关阅读:
    2月份热门的 24 个 jQuery 插件
    走近求伯君1 求伯君,1964年11月26日出生于浙江新昌县。
    转CSDN,13原则
    SQL Server数据库如何正确加密?
    Zend Studio提供zend studio教程、zend studio下载等相关资源的公益性站点。 订阅
    高端人才必看,生意人必读
    有速度才有效率,支持Google gear离线的网站和应用
    2009.08.20总结与微软中国开发部经理段老师的通话无锡德立解决方案
    从SOA、SaaS到博科自主配置平台
    MySQL 1045错误的解决方法
  • 原文地址:https://www.cnblogs.com/wt645631686/p/6868050.html
Copyright © 2011-2022 走看看