代码之家  ›  专栏  ›  技术社区  ›  Cody

什么是MySQL中的注释级警告?

  •  2
  • Cody  · 技术社区  · 6 年前

    好的,我理解MySQL上下文中的错误和警告。但是需要注意级别的警告吗?我已经搜索了MySQL文档,但没有找到任何相关的内容。如果有人能弄清楚他们是什么,为什么有用,那就更好了。

    mysql> create database if not exists city;
    Query OK, 1 row affected, 1 warning (0.00 sec)
    
    mysql> show warnings
        -> ;
    +-------+------+------------------------------------------------+
    | Level | Code | Message                                        |
    +-------+------+------------------------------------------------+
    | Note  | 1007 | Can't create database 'city'; database exists |
    +-------+------+------------------------------------------------+
    1 row in set (0.00 sec)
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   bishop    6 年前

    我一直认为笔记就像是“仅供参考”:发生了什么事,或者没有发生什么事,这可能是有意思的。最接近的定义 docs 是:

    …不影响重新加载操作完整性的事件

    哪个来自 sql_notes 服务器变量,可能在 mysqldump .


    拖网穿越 MySQL source code 看起来像 Sql_Condition::SL_NOTE 注释此级别的警告。有一些,但它们大多是你所期望的非有效信息:

    • 事件已存在
    • 表已存在
    • Query '%s' rewritten to '%s' by a query rewrite plugin
    • 密码集

    遗憾的是,我希望代码docblock 小的 关于它们的更多信息,但它没有:

    class Sql_condition {
     public:
      /**
        Enumeration value describing the severity of the condition.
      */
      enum enum_severity_level { SL_NOTE, SL_WARNING, SL_ERROR, SEVERITY_END };
    

    这可能需要向MySQL团队提交一份文档错误报告。


    有趣的是, MariaDB has this to say :

    注意与警告不同,它只在sql_notes变量设置为1(默认值)时出现,如果启用了严格模式,则不会转换为错误。

    我的收获,在玛丽亚,可能是通过扩展mysql:notes 警告,但可以忽略的警告,因为没有描述数据丢失或副作用。