OceanBase执行自己写的sql升级脚本报错

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OceabBase_CE 4.2.1.2
【 使用版本 】OceabBase_CE 4.2.1.2
【问题描述】OceanBase执行自己写的sql升级脚本报错,ERROR 4179 (HY000)at line 3: operationi not allowed now。脚本前几行的内容为
delimiter //

SET NAMES utf8mb4;(line 3)
SET FOREIGN KEY CHECKS = 0;
【复现路径】shell下,使用普通用户报错;切换到root也报错;重启数据库之后执行也报错。
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

本地模拟未复现,需要收集下日志确认下:

  1. 登录系统租户,打开enable_rich_error_msg 参数
    alter system set enable_rich_error_msg=true;
    
    1. 登录业务租户,执行报错 SQL 语句,会直接返回执行节点 IP 和 trace_id 信息。
      例如:
    obclient [test]> select count(*) from t2;
    ERROR 1146 (42S02): Table 'test.t2' doesn't exist
    [xx.xx.xx.1:2882] [2024-04-13 20:10:20.292087] [YB420BA1CC68-000615A0A8EA5E38-0-0]
    
    1. 去 xx.xx.xx.1 节点过滤日志,如果最新日志无法过滤到,可以正则匹配多个日志进行过滤
    [root@x.x.x.1 ~]$ grep "YB420BA1CC68-000615A0A8EA5E38-0-0"  rootservice.log
    [root@x.x.x.1 ~]$ grep "YB420BA1CC68-000615A0A8EA5E38-0-0"  observer.log
    
    1. 获取完日志信息后,关闭enable_rich_error_msg参数
    alter system set enable_rich_error_msg=false;