---
title: 程序调用 blob.setBytes(1,bytes,0,bytes.length) 插入 blob 报错 ORA-25137:Data value out of range，数据库报错：char type length is too long ret=-4157-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于程序调用 blob.setBytes(1,bytes,0,bytes.length) 插入 blob 报错 ORA-25137:Data value out of range，数据库报错：char type length is too long ret=-4157相关的常见问题和使用技巧，帮助您快速解决程序调用 blob.setBytes(1,bytes,0,bytes.length) 插入 blob 报错 ORA-25137:Data value out of range，数据库报错：char type length is too long ret=-4157的难题。
---
切换语言

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

划线反馈

# 程序调用 blob.setBytes(1,bytes,0,bytes.length) 插入 blob 报错 ORA-25137:Data value out of range，数据库报错：char type length is too long ret=-4157

更新时间：2026-05-19 08:21

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

## 问题现象

程序使用 oceanbase-client-1.1.10.8 驱动调用 `blob.setBytes(1,bytes,0,bytes.length);` 函数插入 blob 字段报错 `ORA-25137:Data value out of range`。

![image01](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/sql/20250228data-value-out-rangechar-type01.png)

![image02](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/sql/20250228data-value-out-rangechar-type02.png)

## 关键信息

```shell
[2024-11-12 15:18:16.238817] WDIAG [COMMON] ob_obj_cast.cpp:11007 [955286][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=17] [dc=0][errcode=-4157] char type length is too long(ret=-4157, str_len_byte=36804, max_accuracy_len=32767, obj={"RAW":, collation:"binary", coercibility:"IMPLICIT"})
[2024-11-12 15:18:16.238835] WDIAG [SQL.ENG] ob_expr_column_conv.cpp:259 [955286][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=12] [dc=0][errcode=-4157] failed to check accuracy(ret=-4157, accuracy={length:32767, precision:-1, scale:-1}, collation_type=63, res_obj={"RAW":, collation:"binary", coercibility:"IMPLICIT"})
[2024-11-12 15:18:16.238848] WDIAG [SQL.ENG] ob_expr_column_conv.cpp:195 [955286][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=9] [dc=0][errcode=-4157] fail to convert skip null check(ret=-4157)
[2024-11-12 15:18:16.238950] WDIAG [PL] ob_pl.cpp:2448 [955286][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=56] [dc=0][errcode=-4157] Cast result type failed(ret=-4157, params->at(i)={obj:{"CHAR":"2F396A2F34414151536B5A4A5267414241514141415141424141442F327742444141454241514542415145424151454241514542415145424151454241514542415145424151454241514542415145424151454241514542415145424151454241514542415145424151454241514542415145424151482F3277424441514542415145424151454241514542415145424151454241514542415145424151454241514542415145424151454241514542415145424
7264317952664D6B3338386C663557336157767664354C6533726F746233766C616C6F56356246322B5761302B554355456B71437A37513456437938347775646E3369354837795373613367646D774F426A49594F6F344479714
[2024-11-12 15:18:16.239016] WDIAG [PL] ob_pl.cpp:2551 [955286][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=52] [dc=0][errcode=-4157] fail to exec init_params(params, is_anonymous)(ret=-4157)

```

## 问题原因

1. 前台程序是调用的 `blob.setBytes` 函数，实际到数据库层面执行的 SQL 是 `call dbms.log.write('','','','')` 来写入数据库。
 2. `call dbms.log.write('','','','')` 这里的值都是字符串类型，传入的是 blob 的数据太大，超过了字符串类型的最大容量导致的报错。
 3. 本质是上 JDBC 没有做好处理，不该这么调用，高版本 JDBC 可以解决此问题。

## 问题的风险及影响

无法插入 blob 字段。

## 影响租户

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

## 适用版本

- OceanBase 数据库 V3.x 版本。
 - OceanBase Connector/J V1.x 版本。

## 解决方法

- 升级驱动至 OceanBase Connector/J V2.4.3 版本。
 - 修改业务代码进行绕过。

上一篇

[OceanBase 数据库 Oracle 租户使用 ALTER 语句预编译函数报错 -4016, Internal error 的原因及解决方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002494767)

下一篇

[如何将通过 dump 函数 dump 出来的 16 进制编码值解码回原始的内容](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003954765) ![有帮助](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) 咨询热线
