更新时间:2024-06-20 GMT+08:00
DROP TABLE IF EXISTS语法误区
问题现象
使用DROP TABLE IF EXISTS语句删除表存在语法误区,理解不当将会删除错误。
原因分析
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的表定义,如果表还有用,继续使用即可。
父主题: 数据库使用