zoukankan      html  css  js  c++  java
  • SET sql_mode

    mysql_query("SET sql_mode= " "")这句是什么意思?
    if($this->version() > '5.0.1') {
    mysql_query("SET sql_mode=''");
    }
    前面是说如果mysql的版本是5.0.1的话就执行下面的语句
    下面的语句(mysql_query("SET sql_mode=''"))要表达的意思是什么?
    MySQL的一个系统变量,MySQL手册里面有接受,打开Ctrl+F查找"sql_mode"就看到了:

    是mysql中对一些设置(如错误处理)等的预设值,使用sql_MODE可以很方便的读取 -

    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:
    sql mode值 说明
    ANSI 'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE和ANSI组合',这种模式使语法和行为更符合标准的sql
    STRICT_TRANS_TABLES 使用与事务和非事务表,严格模式
    TRADITIONAL 也是严格模式,对于插入不正确的值给出错误而不是警告。用在事务时,只要发生错误就立即回滚

  • 相关阅读:
    链表操作二——中间结点的删除等
    stack vector queue 等的实现方式<<0922
    任何和日期相关的函数都在这里<<0922
    类函数返回该类的问题<<0922
    Android学习笔记之PullToRefreshListView和BaseAdapter的使用
    记录Android学习过程中遇到的问题
    ruby appium 准备环境
    os x升级到10.10后appium不能测试通过的解决办法
    appium 在ios模拟器上面成功运行
    appium IOS真机测试
  • 原文地址:https://www.cnblogs.com/cdjiangchao/p/3723900.html
Copyright © 2011-2022 走看看