S03003

错误代码

S03003

报错信息

All subscriptions to the stream table <xxx> must be canceled before it can be dropped. Call getStreamingStat().pubTables to get the status of all stream tables. RefId: S03003

错误原因

用户尝试用 dropStreamTable 函数或者 drop 语句取消一个流表变量的定义。

流表创建出来之后,可以通过 subscribeTable 函数被订阅。订阅有三种方式:

  • 被本节点订阅
  • 被其他节点订阅
  • 被 API 程序订阅

以上三种情况均会导致流表无法被取消定义,也无法被销毁。

只有所有的订阅都被取消之后,流表才可以被 drop。

解决办法

调用 getStreamingStat 函数检查该当前被订阅的流表:

getStreamingStat().pubTables

可以看到当前流表有哪些订阅者。

同时:

getStreamingStat().pubConns

可以查看当前有哪些发布连接。

确认了有哪些订阅者之后可以依次调用 unsubscribeTable 函数取消订阅。所有订阅都取消之后流表就可以被 drop 了。