问题现象
OceanBase 数据库 Oracle 模式租户下,创建触发器报错 ErrorCode = 12899, SQLState = 22001, Details = Data too long for column 'trigger_body' at row 1。
问题原因
OceanBase 数据库触发器系统表 __all_tenant_trigger,定义了 trigger_body 最大长度为 65535 字节,创建的触发器 trigger_body 超过了该阈值。
关键日志信息如下。
[2024-09-13 15:37:29.045222] WDIAG log_user_error_and_warn (ob_poc_rpc_proxy.cpp:244) [35743][T1002_L0_G0][T1002][xxxxx-xxxxx-xxxxx-xxxxx] [lt=16][errcode=-5167] Data too long for column 'trigger_body' at row 1
问题的风险及影响
触发器创建失败。
影响租户
影响 OceanBase 数据库中的 Oracle 租户,对于 SYS 租户和 MySQL 租户无影响。
适用版本
OceanBase 数据库 V2.x、V3.x、V4.x 版本。
解决方法
调小触发器 trigger body 字节数。
注意
在 OceanBase 数据库 V4.2.5 BP2 和 V4.3.5 版本将修复该问题,trigger 大小不再受 65535 字节数限制。