【问题标题】:How can I see the specific value of the sql_mode?如何查看 sql_mode 的具体值?
【发布时间】:2012-05-14 21:20:17
【问题描述】:

MySQL 中有一些sql_mode 值:

ANSI,

IGNORE_SPACE,

STRICT_TRANS_TABLES

我怎样才能看到一个特定的值?手册说:

您可以通过发出 SELECT @@sql_mode 来检索当前模式 声明。

但它什么也不显示,只是表格中的一个空白字段,以@@sql_mode 作为列名。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    它对你来说只是空白,因为你没有设置 sql_mode。如果您设置了它,那么该查询将向您显示详细信息:

    mysql> SELECT @@sql_mode;
    +------------+
    | @@sql_mode |
    +------------+
    |            |
    +------------+
    1 row in set (0.00 sec)
    
    mysql> set sql_mode=ORACLE;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> SELECT @@sql_mode;
    +----------------------------------------------------------------------------------------------------------------------+
    | @@sql_mode                                                                                                           |
    +----------------------------------------------------------------------------------------------------------------------+
    | PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER |
    +----------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    

    【讨论】:

    • 谢谢,这行得通。但其中一些有默认值。我的意思是我想在不设置值的情况下查看默认值。还是不可能?
    • 组合模式都记录在这里:dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html。比如这里可以看到ORACLE组合模式有哪7种模式:dev.mysql.com/doc/refman/5.5/en/…
    • "默认 SQL 模式为空(未设置模式)。"引用自Server SQL Modes 的 MySQL 服务器管理手册页。我认为这意味着 none 的特殊 sql_mode 是开箱即用的。
    • @IkeWalker,你的意思是说默认情况下(“空白”模式),相当于好像所有PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER等都设置?还是您的意思是其中一些已设置但默认情况下根本不显示?
    • @Pacerier 前者是正确的。如果@@sql_mode 为空(您称之为“空白”模式),则设置 no sql_mode。我不会评论默认的 sql_mode,因为这取决于您运行的 MySQL 版本。
    【解决方案2】:

    你也可以试试这个来确定当前的全局sql_mode值:

    SELECT @@GLOBAL.sql_mode;
    

    会话 sql_mode值:

    SELECT @@SESSION.sql_mode;
    

    我也有感觉,SQL模式确实是空的。

    【讨论】:

      【解决方案3】:

      您需要先使用登录到您的 mysql 终端 mysql -u username -p password

      然后使用这个:

      SELECT @@sql_mode; or SELECT @@GLOBAL.sql_mode;
      

      输出将是这样的:

      STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUB

      你也可以这样设置sql模式:

      SET GLOBAL sql_mode=TRADITIONAL;
      

      【讨论】:

        猜你喜欢
        • 2015-02-13
        • 2018-09-14
        • 2021-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-21
        • 1970-01-01
        相关资源
        最近更新 更多