---
title: "SQL 执行或查看计划时报错 ERROR 4016 (HY000): Internal error，日志打印 obj1 and obj2 can&#x27;t compare 的原因和解决方法-OceanBase数据库使用指南"
description: "了解OceanBase数据库在实际应用中关于 SQL 执行或查看计划时报错 ERROR 4016 (HY000): Internal error，日志打印 obj1 and obj2 can&#x27;t compare 的原因和解决方法相关的常见问题和使用技巧，帮助您快速解决 SQL 执行或查看计划时报错 ERROR 4016 (HY000): Internal error，日志打印 obj1 and obj2 can&#x27;t compare 的原因和解决方法的难题。"
---
切换语言

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

划线反馈

# SQL 执行或查看计划时报错 ERROR 4016 (HY000): Internal error，日志打印 obj1 and obj2 can't compare 的原因和解决方法

更新时间：2026-05-15 09:06

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

## 问题现象

select 执行偶发报错 `ERROR 4016 (HY000): Internal error，explain` 也同样报错 `ERROR 4016 (HY000): Internal error`。

## 关键信息

**关键日志：** obj1 and obj2 can't compare。

且表字段含有 text collate utf8mb4_bin 类型字段。

**完整日志如下：**

```shell
[2024-11-11 18:45:51.169623] WDIAG [COMMON] compare (ob_obj_compare.cpp:3906) [9763][T1024_L0_G0][T1024][xxxxx-xxxxx-xxxxx-xxxxx] [lt=10][errcode=-4016] obj1 and obj2 can't compare(obj1={"TEXT":"select objt_id,prdu_code,orig_date,expi_date,term_type,crnt_perd_fac_inrat,ajst_benm,ajst_quot,op_date,op_mode from GDS_D_IT.D_P", collation:"utf8mb4_bin", coercibility:"IMPLICIT"}, obj2={"TEXT":"SELECT TITLE AS suggest , TITLE AS name , AC_DESC AS ACTIVE_TOPIC , REPLACE(b.name , '链接' , '') AS TYPE , STARTDATE , ENDDATE , ", collation:"invalid_type", coercibility:"IMPLICIT"}, obj1.get_meta()={type:"TEXT", collation:"utf8mb4_bin", coercibility:"IMPLICIT"}, obj2.get_meta()={type:"TEXT", collation:"invalid_type", coercibility:"IMPLICIT"})

```

## 问题原因

表结构中含有 `text` 类型字段且定义为 `collate utf8mb4_bin`，此字段与 `string` 类型比较时，判断 `string` 类型字符序和表字段定义字符集的序不一致，unload_sql text 指定为 utf8mb4_bin "xxxxx" 的字符序因为缺陷而没推导成功，化器计算选择率时，由于字符集不同不能比较，导致报错。

## 问题的风险及影响

SQL 频繁执行失败。

## 影响租户

影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。

## 适用版本

OceanBase 数据库 V4.2.1 BP10（oceanbase-4.2.1.10-110000072024111216）及之前版本。

## 解决方法及规避方式

- 解决方法：

  升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V4.2.1 BP10 Hotfix1（oceanbase-4.2.1.10-110010022024112620）及之后版本。
 - 规避方式：

  在 SQL 的 text 类型比较条件前添加 `collate utf8mb4_bin`，如下。

  ```shell
  select * from t1 where t1.sql_text COLLATE utf8mb4_general_ci = "abc";

  ```

上一篇

[OceanBase 数据库 V4.2.1 BP2 版本中存在相同用户名情况下将导致自动统计信息收集报 -4016 Internal error 错误](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003209186)

下一篇

[自动内存管理锁冲突问题](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000753996) ![有帮助](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) 咨询热线
