---
title: 在全文索引的表上执行 DML 报正确性问题 -4337-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于在全文索引的表上执行 DML 报正确性问题 -4337相关的常见问题和使用技巧，帮助您快速解决在全文索引的表上执行 DML 报正确性问题 -4337的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 在全文索引的表上执行 DML 报正确性问题 -4337

更新时间：2026-07-24 10:01

适用版本： V2.1.x、V2.2.x、V3.1.x、V3.2.x 内容类型：Troubleshoot  

## 问题现象

在对包含全文索引 (fulltext index) 的表（分区）进行 DML 操作时，会出现正确性相关问题，报错 -4377。

- 执行 DML 操作，报错 -4377。

  ```shell
  obclient > DELETE FROM xxxx WHERE id=xxxxx;

  ```

  返回结果如下。

  ```shell
  4377 - fatal internal error in [check_delete_index_xxxxx]

  ```
 - 日志中的报错。

  ```shell
  WARN  [SQL.EXE] sync_fetch_local_result (ob_mini_task_executor.cpp:373) [47324][2306][xxxx-xxxx] [lt=3] [dc=0] open root op failed(ret=-4377)
  INFO  [SHARE.PT] ob_partition_location_cache.cpp:750 [46410][758][xxxxx-xxxxx] [lt=15] [dc=0] batch_renew_location_with_sql success(ret=0, cnt=1)
  WARN  [SQL.EXE] sync_fetch_local_result (ob_mini_task_executor.cpp:387) [47324][2306][xxxxx-xxxxx] [lt=4] [dc=0] get next row failed(ret=-4377)
  WARN  [SQL.EXE] mini_task_local_execute (ob_mini_task_executor.cpp:423) [47324][2306][xxxxx-xxxxx] [lt=3] [dc=0] sync fetch local result(ret=-4377)
  WARN  [SQL.EXE] mini_task_execute (ob_mini_task_executor.cpp:494) [47324][2306][xxxxx-xxxxx] [lt=3] [dc=0] fail to do mini task local execute(ret=-4377)
  WARN  [SQL.EXE] execute (ob_mini_task_executor.cpp:459) [47324][2306][xxxxx-xxxxxx] [lt=6] [dc=0] mini task execute failed(ret=-4377, task_location={server:"xx.xx.xx.xx:xxxx", ob_task_id:{ob_job_id:{ob_execution_id:{server:"0.0.0.0", execution_id:xxxxxx, hash:xxxxxx}, job_id:xxxxx}, task_id:0, task_cnt:0}})
  WARN  [SQL.ENG] inner_open (ob_multi_part_delete.cpp:98) [47324][2306][xxxxxx-xxxxx] [lt=10] [dc=0] execute multi table dml task failed(ret=-4377)
  WARN  [SQL.ENG] open (ob_phy_operator.cpp:160) [47324][2306][xxxxx-xxxxxx] [lt=4] [dc=0] Open this operator failed(ret=-4377, op_id=0, op_type="PHY_MULTI_PART_DELETE")
  WARN  [SQL.ENG] open (ob_phy_operator.cpp:181) [47324][2306][xxxxxx-xxxxxx] [lt=4] [dc=0] fail to process error(ret=-4377)
  WARN  [SQL.EXE] open (ob_execute_result.cpp:50) [47324][2306][xxxxxx-xxxxxx] [lt=2] [dc=0] root op fail to open(ret=-4377)
  WARN  [SQL] open (ob_result_set.cpp:201) [47324][2306][xxxxxx-xxxxxx] [lt=5] [dc=0] fail open main query(ret=-4377)
  WARN  [SQL.SESSION] sync_open (ob_result_set.cpp:145) [47324][2306][xxxxx-xxxxxx] [lt=5] [dc=0] fail to exec open()(ret=-4377)
  WARN  [SERVER] response_result (ob_async_plan_driver.cpp:54) [47324][2306][xxxxx-xxxxxx] [lt=6] [dc=0] failed to do result set open(ret=-4377)
  WARN  [SERVER] test_and_save_retry_state (ob_query_retry_ctrl.cpp:531) [47324][2306][xxxxx-xxxxx] [lt=3] [dc=0] do not need retry(client_ret=-4377, err=-4377, expected_stmt=true, THIS_WORKER.get_timeout_ts()=1658304822933666, retry_type_=0, result.get_stmt_type()=4, result.get_exec_context().need_change_timeout_ret()=false, session->get_retry_info().get_last_query_retry_err()=0)
  INFO  [SERVER] ob_query_retry_ctrl.cpp:557 [47324][2306][xxxxxx-xxxxxx] [lt=9] [dc=0] check if need retry(client_ret=-4377, err=-4377, retry_type_=0, retry_times=1, multi_stmt_item=

  ```
 - 查询表结构发现全文索引。

  ```sql
  obclient > show create table xxxx;

  CREATE TABLE `xxxx` (
  `id` bigint(64) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `xxx_modified` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '数据插入时填入, 更新时也要更新',
  `work_xxxx_id` varchar(1024) DEFAULT '' COMMENT '工作组ID',
  `xx_id` varchar(512) NOT NULL DEFAULT '' COMMENT '任务id',
  `work_xxxx_distribute_status_cd` varchar(1) DEFAULT '0' COMMENT '派发状态',
  `task_xxxx_attribute` varchar(1) DEFAULT NULL COMMENT '任务相关属性',
  PRIMARY KEY (`id`, `xx_id`),
  FULLTEXT KEY `work_xxxx_id` (`work_xxxx_id`) CTXCAT(`work_xxxx_id`) WITH PARSER 'XXX_ZZZ' BLOCK_SIZE 16384,
  KEY `idx_xxx_modified` (`xxx_modified`) BLOCK_SIZE 16384 GLOBAL,
  KEY `idx_xx_id` (`xx_id`) BLOCK_SIZE 16384 GLOBAL
  ) AUTO_INCREMENT = 14020090 DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.0' REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 COMMENT = '工作量记录表'
  partition by key(xx_id)
  (partition p0,
  partition p1,
  partition p2,
  partition p3,
  partition p4,
  partition p5,
  partition p6) ;

  ```

## 问题原因

当在有全文索引的相关列上执行 DML 操作时因正确性校验检查会报错误码 4377。

## 问题的风险及影响

在全文索引的相关列上进行 DML 操作会出现正确性校验检查相关问题。

## 影响的版本

OceanBase 数据库企业版 V2.x、V3.x 版本。

## 解决方法及规避方式

### 解决方法

删掉表上存在的全文索引。

```sql
DROP INDEX fulltext_name ON table_name;

```

### 规避方式

请勿在 OceanBase 数据库 V2.x、V3.x 版本上创建和使用全文索引。

Previous

[OceanBase 数据库 MySQL 模式执行 Delete 语句报 fatal internal error](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209984)

Next

[OceanBase 数据库 V4.2.1 版本中 insert 语句出现非预期报错 ORA-12899: value too large for column xxxx (actual: 2, maximum: 1) 的原因和解决方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002397187) ![有帮助](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) 咨询热线
