TDengine 新功能 通过 UID 删除不可见表
1. 背景
我们在通过程序建表时,使用反引号把表名引用起来时,可以创建出来有不可见字符的表名,此时这样的表就无法访问,也无法删除,成了系统中的僵尸表。
从 TDengine 3.3.3.0 版本开始,提供了一个新的通过表的 UID 来删除表的功能,对于原来的僵尸表,即可查询到表对应 UID 直接删除。
2. SQL语法
DROP TABLE WITH [ db_name. ]`UID` [, [ db_name. ]`UID`] ...
- 功能说明:
根据表 UID 删除表,表可以为超级表、子表或普通表,UID 必须加且只能使用反引号,可以一次删除多个 UID, 之间使用逗号分隔。
- 获取表 UID
表的 UID 可以查询系统表得到,如:
select db_name,table_name ,uid from information_schema.ins_tables where uid is not null;
- 错误码说明:
Error code | description | note |
---|---|---|
0x2600 | syntax error near | Sql 语句非法 |
0x2603 | Table does not exist | drop 不存在的表 |
0x2644 | Permission denied or target object not exist | 非 root 用户执行 drop table with |
3. 总结
通过表 UID 删除表是解决表名时有不可见字符导致无法使用表名删除的场景使用。