java.sql.BatchUpdateException: ORA-12899
来源:互联网 发布:在淘宝上怎样收藏店铺 编辑:程序博客网 时间:2024/06/06 20:45
最近遇到一个问题,在用JDOM组件解析XML文件数据,并将数据存储到oracle数据库时,出现了如下错误:
<span style="font-family:SimSun;font-size:12px;">Exception in thread "main" java.sql.BatchUpdateException: ORA-12899: value too large for column "SCOTT"."EMP1"."JOB" (actual: 12, maximum: 9)at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:367)at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:8738)at com.uestc.util.InsertEmp.main(InsertEmp.java:48)</span>要解析的XML文件如下所示:
<span style="font-family:SimSun;font-size:12px;"><?xml version="1.0" encoding="GBK"?><emps><emp><empno>1000</empno><ename>诸葛亮</ename><job>经理</job><hiredate>1998-09-19</hiredate><sal>3000</sal><comm>500</comm></emp><emp><empno>1001</empno><ename>关云长</ename><job>经理</job><hiredate>1999-03-12</hiredate><sal>3500</sal><comm>200</comm></emp><emp><empno>1002</empno><ename>赵子龙</ename><job>项目经理</job><hiredate>2000-07-27</hiredate><sal>5000</sal><comm>1600</comm></emp><emp><empno>1003</empno><ename>刘玄德</ename><job>人事</job><hiredate>2001-03-14</hiredate><sal>2000</sal><comm>1300</comm></emp></emps></span>
事先已在oracle数据库中创建了emp1表,创建脚本语句为:
<span style="font-family:SimSun;font-size:12px;">CREATE TABLE emp1(empno NUMBER(4),ename VARCHAR2(10),job VARCHAR2(9),hiredate DATE,sal NUMBER(7,2),comm NUMBER(7,2));</span>
问题的原因是对oracle中文字符集编码的了解不够。
查看oraccle server端字符集,输入以下查询语句:
select userenv('language') from dual;
如果显示的是以下内容:
<span style="font-family:SimSun;font-size:12px;">SIMPLIFIED CHINESE_CHINA.ZHS16GBK</span>则oracle每个汉字字符占据两个字节。
如果显示的是以下内容:
SIMPLIFIED CHINESE_CHINA.AL32UTF8
则oracle每个汉字占据三个字节。经查询本地的数据库编码是AL32UTF8,每个汉字占3个字节,因此job中“项目经理”占据了12个字节,而创建的数据库表中只分配了9个字节,因此抛出了这个异常。将数据表的创建脚本改为如下所示,问题就解决了:
<span style="font-family:SimSun;font-size:12px;">CREATE TABLE emp1(empno NUMBER(4),ename VARCHAR2(10),job VARCHAR2(12),hiredate DATE,sal NUMBER(7,2),comm NUMBER(7,2));</span>
0 0
- java.sql.BatchUpdateException: ORA-12899
- java.sql.BatchUpdateException: ORA-01031: 权限不足
- java.sql.BatchUpdateException: ORA-02291: integrity constraint
- Caused by:java.sql.BatchUpdateException:ORA-02291
- java.sql.BatchUpdateException: ORA-00001: unique constraint (IEVSP.PK_C_CSERVICES) violated
- java.sql.BatchUpdateException
- java.sql.BatchUpdateException(转载)
- java.sql.BatchUpdateException
- java.sql.BatchUpdateException:
- java.sql.BatchUpdateException
- Caused by: java.sql.BatchUpdateException:
- java.sql.BatchUpdateException异常解决
- java.sql.BatchUpdateException问题处理
- java.sql.BatchUpdateException: ORA-01401: 插入的值对于列过大
- 有关hibernate一对多编程遇到的问题:Caused by:java.sql.BatchUpdateException: ORA-02291
- oracle java.sql.BatchUpdateException: ORA-01000: 超出打开游标的最大数
- Could not execute JDBC batch update : java.sql.BatchUpdateException: ORA-00926: 缺失 VALUES 关键字
- oracle Caused by: java.sql.BatchUpdateException: ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
- Ubuntu 14 安装和配置Sublime Text 3
- 0-1背包 (算法竞赛入门经典0-1背包问题)
- MFC - 消除警告
- linux 批量转换文本编码为UTF-8
- Dijkstra算法模板
- java.sql.BatchUpdateException: ORA-12899
- iOS Bundle详解
- Cocos2d-2.x_CCLayer,CCLayerColor,CCLayerGradient,CCLayerMultiplex层的介绍
- iPhone 6 上被封印的技术,将会被这家公司带到 Android
- C语言知识点<重要>
- LinearLayout里面的空间居中对齐
- UVA 10200 Prime Time
- Java中有关 null 的9件事
- 浅析单播、广播、多播和IGMP