我是靠谱客的博主 轻松机器猫,最近开发中收集的这篇文章主要介绍报错:java.sql.SQLException:ORA-12899:value too large for column “xxx“,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

生产上oracle数据库入库报错:

java.sql.SQLException:ORA-12899:value too large for column "xxx"(actual:34,maximum:30)

但是看日志,那个入库字段看着确实是一个17位长的数字。因为该业务已经稳定运行了一段时间,而34又是17的倍数,所以第一时间怀疑是因为入库字段本身的问题,可能是由于全半角导致。

因为在日志中看不出该字段的实际字节长度,所以在另一张表里查询该字段的字节长度。

SELECT LENGTHB(XXX) FROM XXXX WHERE XX = X;

结果确实是34,证实了猜想。

补充:
在使用oracle时,很多人不确定一个汉字(或者说一个全角字符)占多少个字节,是两个还是三个?
这个是根据oracle中的字符集编码决定的。

一般情况下,数据库的NLS_CHARACTERSET
为AL32UTF8或UTF8,即一个汉字占用三到四个字节。如果NLS_CHARACTERSET为ZHS16GBK,则一个字符占用两个字节。

SELECT * FROM v$nls_parameters WHERE PARAMETER='NLS_CHARACTERSET';

5: PARAMETER
VALUE
6: ------------------------ ------------------------
7: NLS_CHARACTERSET
ZHS16GBK

另外,LENGTH函数求得是占用字符数,LENGTHB或者VSIZE函数求得是占用字节数。


1: SQL> SELECT
LENGTH('您好') FROM DUAL;
2:
3: LENGTH('您好')
4: --------------
5:
2
6:
7: SQL> SELECT
LENGTHB('您好') FROM DUAL;
8:
9: LENGTHB('您好')
10: ---------------
11:
4
12:

参考:ORACLE数据库汉字占几个字节问题

最后

以上就是轻松机器猫为你收集整理的报错:java.sql.SQLException:ORA-12899:value too large for column “xxx“的全部内容,希望文章能够帮你解决报错:java.sql.SQLException:ORA-12899:value too large for column “xxx“所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部