---
title: 如何定位内部 SQL 导致的 ret=-5001 报错-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于如何定位内部 SQL 导致的 ret=-5001 报错相关的常见问题和使用技巧，帮助您快速解决如何定位内部 SQL 导致的 ret=-5001 报错的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 如何定位内部 SQL 导致的 ret=-5001 报错

更新时间：2026-05-29 08:46

适用版本： V4.2.x、V4.3.x 内容类型：How-to  

## 问题现象

在执行业务 SQL 过程中，有时候会遇到 Parse error 或者 syntax error，但是引起报错的并不是业务 SQL 本身。这种情况下，往往是执行业务 SQL 执行过程中调用了 inner sql，但是 inner sql 执行遇到诸如反拼失败的错误，最终导致了业务 SQL 执行失败。

**案例一：**

业务执行 SQL，偶现报错 -4016，根据报错 trace_id 定位到报错来自动态采样 SQL 在解析分区键值时，反拼动态采样 SQL 报错 `syntax error`，最终执行报错 -5001。

![image](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/sql/20250219locate-ret-5001.png)

**案例二：**

系统升级后，执行旁路导入报错 `ERROR 1064 (42000): Parse error`，但是同样的 SQL 在旧版本执行没有问题。

## 关键诊断信息

报错为 `syntax error` 或者 `parse error` 但是 SQL 本身没有语法问题。这时需要定位到具体出错的 SQL，之后可以单独执行出错的 SQL，验证是否有语法错误。

由于报错的 inner SQL 不一定是在相同的 trace_id 下执行，这时可以通过过滤 `ret=\-5001` 定位到最开始解析报错的 error。

inner sql 执行返回 `syntax error`，往往是 BUG，确定可以重现后，可以查看是否有已知 BUG 或者反馈给 OceanBase 数据库技术支持团队获取帮助。

## 问题原因

**案例一：**

动态采样的 SQL 会显式指定裁剪后的分区，当分区名称为纯数字时，需要进行分区转义。默认反拼语句对数字类型的分区键没有加上引号。此外，分区名称需要转义符或者是非 utf8 字符集时，也会报错。

简化复现 case。

```shell
obclient [test]> CREATE TABLE t014 (
        c1 bigint(20),
        c2 bigint(20)
      )
       partition by list columns(c1)
      (partition `1`values in (1),
      partition `2` values in (2),
      partition `3` values in (3));

Query OK, 0 rows affected (4.294 sec)

obclient [test]> select /*+ dynamic_sampling(1) */ * from t014 where c1 = '1' ;
Empty set (0.123 sec)

```

查询中通过添加动态采样 Hint，触发动态采样。对应日志报错如下。

```shell
[2025-01-04 21:20:21.611949] INFO  [SQL.PARSER] parse_sql (ob_parser.cpp:952) [62516][T1004_L0_G0][T1004][xxxxx-xxxxx-xxxxx-xxxxx] [lt=5] fail
ed to parse stmt as sql(stmt=SELECT /*+ NO_REWRITE NO_PARALLEL  DYNAMIC_SAMPLING(0)  QUERY_TIMEOUT(996439)  OPT_PARAM('USE_DEFAULT_OPT_STAT','TRUE') */ COUNT(*), SUM(CASE WHEN  (`c1` =
 '1') THEN 1 ELSE 0 END) FROM `test`.`t014` partition( 1), ret=-5001)

```

**案例二：**

报错的 inner SQL 不在相同的 trace_id 下执行，这时可以通过过滤 `ret=\-5001` 定位到最开始解析报错的 error。

该问题是因为旁路导入重建索引时，内部拼的补数据 SQL 没有对分区名做引号处理，导致报错。

```shell
observer.log:[2025-01-07 20:28:16.303722] INFO  [SQL.PARSER] parse_sql (ob_parser.cpp:971) [69509][T1004_L5_G0][T1004][xxxxx-xxxxx-xxxxx-xxxxx] [lt=23] failed to parse stmt as sql(stmt_str=INSERT /*+ monitor enable_parallel_dml parallel(16) opt_param('ddl_execution_id', 1) opt_param('ddl_task_id', 399706) opt_param('enable_newsort', 'false')   use_px */INTO `test`.`__idx_500148_hc_other_hold_hst_01l` PARTITION(20241011,20241230,20241231,20250102,20250103,20250106,20250107)(`data_date`, `no`, `archive_key`) SELECT /*+ index(`__hidden_500148_500055table_schema` primary)  */ `data_date` AS `data_date`, `no` AS `no`, `archive_key` AS `archive_key` from `test`.`__hidden_500148_500055table_schema` PARTITION(20241011,20241230,20241231,20250102,20250103,20250106,20250107) as of snapshot 1736252893399717000 order by  1, 2, 3, ret=-5001)

```

## 问题的风险及影响

内部 SQL 执行失败影响业务 SQL 的执行。

## 影响租户

影响 OceanBase 数据库中的 SYS 租户和 MySQL 租户，对于 Oracle 租户无影响。

## 影响版本

- OceanBase 数据库 V4.2.x 系列中 V4.2.2 GA（oceanbase-4.2.2.0-100000082024011317）及之后版本。
 - OceanBase 数据库 V4.2.x 系列中 V4.3.2（oceanbase-4.3.2.0-100000442024071321）及之后版本。

## 解决方法

**案例一：**

升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V4.2.1 BP10 Hotfix5（oceanbase-4.2.1.10-110050012025011614）及之后版本、V4.2.5 BP2（oceanbase-4.2.5.2-102000122025011711）。

**案例二：**

升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V4.2.5 BP2（oceanbase-4.2.5.2-102000122025011711）及之后版本、V4.3.5 BP1（oceanbase-4.3.5.1-101000292025030623）及之后版本。

## 规避方式

**案例一：**

关闭动态采样 `/*+dynamic_sampling(0)*/`。

**案例二：**

不使用旁路导入。

上一篇

[OceanBase 数据库集群内执行 SQL 时出现 -4019 异常](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002393086)

下一篇

[如何结束子 Session](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003791404) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
