更新时间:2024-07-01 GMT+08:00

DROP TABLE IF EXISTS语法误区

问题现象

使用DROP TABLE IF EXISTS语句删除表存在语法误区,理解不当将会删除错误。

原因分析

DROP TABLE IF EXISTS语法可以简单这样理解:

  1. 判断当前CN是否存在该table。
  2. 如果存在,就给其他CN和DN下发DROP命令;如果不存在,则跳过。

而不是:

  1. 将DROP TABLE IF EXISTS下发给所有CN和DN。
  2. 各个CN和DN判断自己有没有该table,如果有的话执行DROP。

处理方法

如果出现某些表定义在部分CN/DN存在,部分CN/DN不存在时,是不可以直接用DROP TABLE IF EXISTS修复的。

这种情况的通用修复方式为:

  1. CREATE TABLE IF NOT EXISTS将所有CN和DN的表定义补齐。
  2. 如果表没有用,就在CN上DROP table删掉所有CN和DN的表定义,如果表还有用,继续使用即可。