首批通过分布式安全可靠测评,为关键业务系统打造
动态分区修改时的报错 NOT_SUPPORT 的原因及解决方法
更新时间:2026-05-21 09:16
问题现象
当修改动态分区的时候报这个错本来是要检查比较分区键列名与分区函数表达式字符串,不相等即视为使用了函数/表达式(如 to_char(col),date_trunc(col),substr(col) 等),但是这里也会把反引号当作表达式报错。所以尝试通过 ALTER 语句将带有反引号的分区字段的表修改为动态分区时,会触发 OB_NOT_SUPPORTED,报错 for dynamic partition, this part func expr is not supported。此问题在 OceanBase 数据库 V4.3.5 BP2 和 V4.3.5 BP4 版本的集群中测试时均能复现。
关键信息
错误语句报错信息:
for dynamic partition, this part func expr is not supported。触发条件: 使用动态分区功能时,分区字段名被加上了反引号。
测试版本: V4.3.5 BP4 版本。
问题原因
此问题是由于 OceanBase 内核的一个 BUG 引起,在检验分区列是否带有表达式时,反引号本身不算表达式和原分区键列名应该相同,系统并没有过滤反引号而是直接和分区键列名进行了对比,导致了对比错误。
问题的风险及影响
修改分区表为动态分区表时发生报错。
影响动态分区表的创建和修改流程。
适用版本
OceanBase 数据库 V4.3.5 BP2(oceanbase-4.3.5.2-102000162025051417)版本、V4.3.5 BP4(oceanbase-4.3.5.4-104000052025090918)版本。
解决方法
升级到问题已修复版本。目前已修复的版本包含 OceanBase 数据库 V4.3.5 BP5(oceanbase-4.3.5.5-105000212025111617)及之后版本。
不要给分区键加上反引号或者各种表达式。
规避方式
在创建或修改分区表时,避免使用反引号来包围分区字段名。
对现有表结构进行检查,确保没有使用反引号包围分区字段,如果有,需要移除反引号并重新执行 ALTER 语句。