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

如果表不存在,为什么DROP TABLE IF EXISTS会导致MySQL警告?

  •  2
  • BadHorsie  · 技术社区  · 4 年前

    为什么要删除一个不存在的表 IF EXISTS 引起警告?

    CREATE DATABASE `test`;
    USE `test`;
    DROP TABLE IF EXISTS `nonexistent_table`;
    SHOW WARNINGS;
    

    未知表“test.nexistent_table”

    这句话的重点不就是首先检查它是否存在,并接受它可能不存在吗?

    0 回复  |  直到 4 年前
        1
  •  3
  •   eshirvana    4 年前

    不同的是,它不会给你一个错误,只是警告:

    DROP TABLE IF EXISTS `nonexistent_table`;
    SHOW WARNINGS;
    
    ✓
    
    Level | Code | Message                                        
    :---- | ---: | :----------------------------------------------
    Note  | 1051 | Unknown table 'db_2134513036.nonexistent_table'
    
    DROP TABLE `nonexistent_table`;
    SHOW WARNINGS;
    
    Unknown table 'db_2134513036.nonexistent_table'
    

    db<>小提琴 here

    如您所见,第一条语句成功运行,但第二条语句失败。