更新时间:2022-09-30 GMT+08:00
分享

drop table if exists语法误区

问题现象

使用drop table if exists执行drop表的语句存在语法误区,理解不当将会删除错误。

原因分析

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的表定义,如果表还有用,继续使用即可。
分享:

    相关文档

    相关产品