zoukankan      html  css  js  c++  java
  • SQL_MODE 的设置

    查看当前的 SQL_MODE

    SELECT @@sql_mode
    SELECT @@sql_mode 的执行结果
    mysql> SELECT @@sql_mode;
    +-----------------------------------------------------------------------------------------------------------------------+
    | @@sql_mode                                                                                                            |
    +-----------------------------------------------------------------------------------------------------------------------+
    | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
    +-----------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)

    设置 SQL_MODE

    设置 SQL_MODE 是通过 SET 关键词进行的,其他参数值也可通过该关键词进行修改。可通过 SHOW VARIABLES 查看到所有可用配置项。

    设置系统变量时,可指定所设置的作用域,也可通过 @@ 前缀来获取变量,甚至也可以没有任何前缀,以下写法都是合法的:

    SET SESSION sql_mode = 'TRADITIONAL';
    SET LOCAL sql_mode = 'TRADITIONAL';
    SET @@SESSION.sql_mode = 'TRADITIONAL';
    SET @@LOCAL.sql_mode = 'TRADITIONAL';
    SET @@sql_mode = 'TRADITIONAL';
    SET sql_mode = 'TRADITIONAL';

    可用的 SQL 模式可在官方文档中查询到 5.1.10 Server SQL Modes

    系统变量的作用域

    There are two scopes in which system variables exist. Global variables affect the overall operation of the server. Session variables affect its operation for individual client connections. A given system variable can have both a global and a session value.

    --5.1.9 Using System Variables

    系统的这些配置项有其作用项,是分开进行管理的。

    其中,

    • GLOBAL 类型会对每次连接生效。
    • SESSION 类型只对当前连接生效,LOCAL 关键词等效。

    两者皆为运行时变量,可随时修改。

    • PERSIST 类型不影响运行时,会将设置结果写入 mysqld-auto.cnf 这个 MySQL 配置文件。

    所以,设置时可通过在 SET 后加相应作用域的修饰词,像这样

    SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';

    也可以通过 @@ 加上作用域进行变量访问的方式:

    SET @@GLOBAL.sql_mode = 'NO_ENGINE_SUBSTITUTION';

    两者是等效的。

    作用域缺省情况下为 SESSION 类型,即只对当前连接生效。

    SET @@sql_mode = 'NO_ENGINE_SUBSTITUTION';

    MySQL 中的配置文件

    下面表格来自官方文档 Table 4.2 Option Files Read on Unix and Unix-Like Systems 部分。

    文件 用途
    /etc/my.cnf 全局配置项
    /etc/mysql/my.cnf 全局配置项
    SYSCONFDIR/my.cnf 全局配置项
    $MYSQL_HOME/my.cnf 服务器相关配置项,有于服务端
    defaults-extra-file 如果存在该文件的话,通过--defaults-extra-file 参数启用程序时会读取该配置项
    ~/.my.cnf 用户配置项
    ~/.mylogin.cnf 用户登录路径相关,用于客户端
    DATADIR/mysqld-auto.cnf SET PERSISTSE PERSIST_ONLY 设置的系统参数会保存到该文件

    相交资源

  • 相关阅读:
    待遇与福利基本词汇/句型
    什么是成功?
    申请休假常用句型
    到底什么是快乐?
    复试注意事项(二)
    php5中php.ini 设置教程中文版
    lamp环境安装shell脚本
    如何解决NAT转发问题
    Linux下PHP扩展pdo_mysql
    PHP缓存原理以及smarty缓存
  • 原文地址:https://www.cnblogs.com/Wayou/p/mysql_sql_mode.html
Copyright © 2011-2022 走看看