更新时间:2022-09-30 GMT+08:00
drop table if exists语法误区
问题现象
使用drop table if exists执行drop表的语句存在语法误区,理解不当将会删除错误。
原因分析
drop table if exists语法可以简单这样理解:
- 判断当前cn是否存在该table;
- 如果存在,就给其他cn和dn下发drop命令;如果不存在,则跳过。
而不是:
- 将drop table if exists下发给所有cn和dn;
- 各个cn和dn判断自己有没有该table,如果有的话执行drop。
处理方法
如果出现某些表定义在部分cn/dn存在,部分cn/dn不存在时,是不可以直接用drop table if exists修复的。
这种情况的通用修复方式为:
- create table if not exists将所有cn和dn的表定义补齐。
- 如果表没有用,就在cn上drop table删掉所有cn和dn的表定义,如果表还有用,继续使用即可。
父主题: 数据库使用