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

3
为什么删除一个不存在的表时使用IF EXISTS会引发一个警告?
CREATE DATABASE `test`;
USE `test`;
DROP TABLE IF EXISTS `nonexistent_table`;
SHOW WARNINGS;

未知表 'test.nonexistent_table'

这个语句的整个意图不就是先判断该表是否存在,然后接受其可能不存在吗?


1
这只是一条信息提示,如果您有多个语句,可以在查询结果中跟随,以便您可以准确地了解正在发生的情况。该语句仍然成功执行,不会引发任何错误。我通常紧接着使用CREATE TABLE语句。 - chrisbyte
因为这就是它的工作方式。 - Strawberry
个人而言,我总是想要知道当我执行 DDL 时会发生什么。 - Andrew
1个回答

3

不同的IT不会给你错误,只会发出警告:

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<>fiddle 在这里

正如您所看到的,第一个语句成功运行,但第二个语句失败了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接