`
arganzheng
  • 浏览: 103508 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Oracle一个诡异的错误——Can bind a LONG value only for insert into a LONG column

阅读更多

Oracle一个诡异的错误——Can bind a LONG value only for insert into a LONG column

CrmProductTaskEndAction : SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [72000]; error code [1461];   
--- The error occurred in com/alibaba/intl/bops/crm/syslog/dao/ibatis/sqlmap/CRM_SYSLOG_EMAIL.xml.  
--- The error occurred while applying a parameter map.  
--- Check the CRM_SYSLOG_EMAIL.insert-InlineParameterMap.  
--- Check the statement (update failed).  
Error: java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column

   at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
   at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
   at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
   at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
   at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
   at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
   at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
   at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)
   at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3422)
   at com.alibaba.ark.jdbc.PreparedStatementWrapper.execute(PreparedStatementWrapper.java:136)

原因就是字段超长。LONG column是Oracle老的BLOB数据类型,已经deplicated了,Use BLOB instead of LONG。

Datatype Description Max Size:Oracle 8 Max Size:Oracle 9i/10g Max Size:Oracle 11g Max Size:PL/SQL PL/SQL Subtypes/Synonyms
VARCHAR2(size) Variable length character string having maximum length size bytes. You must specify size 4000 bytes minimum is 1 4000 bytes minimum is 1 4000 bytes minimum is 1 32767 bytes minimum is 1 STRING VARCHAR
LONG Character data of variable length (A bigger version the VARCHAR2 datatype) 2 Gigabytes 2 Gigabytes - but now deprecated (provided for backward compatibility only). 2 Gigabytes - but now deprecated (provided for backward compatibility only). 32760 bytes Note this is smalller than the maximum width of a LONG column  

但是将同样的SQL放在pldev终端直接跑,确实报另外一个错误:

ORA-01401:insert value too large for column

具体参考:Oracle/PLSQL: ORA-01401 Error

为什么同样的SQL,会跑出不同的错误结果,仔细看异常堆栈,发现前面的ORA-01461错误是Oracle JDBC驱动(ojdbc14)抛出来的。


分享到:
评论

相关推荐

    oracle数据库双机热备安装——裸设备.doc

    通过上述步骤,我们成功在Red Hat Linux环境下搭建了一个基于裸设备的Oracle数据库双机热备系统。该系统能够有效提升数据库服务的稳定性和可靠性,同时还能提供自动故障转移功能,从而确保业务连续性。在整个过程中...

    Android 出现“Can’t bind to local 8602 for debugger”错误的解决方法

    Android 出现“Can’t bind to local 8602 for debugger”错误的解决方法 为了适应Android5.0的开发,把JDK升级到了1.7,然后在ADT中想调试一下程序(我连接的真机),结果报错如下: [2015-04-23 15:31:37 - ddms]...

    windows搭建个人dns服务器——bind9

    国内dns环境大家都懂的,自己搞一个也是不错的! PS:该工具为windows 64位版本,里面含有dig工具!

    Linux上配置DNS服务器的包——bind9

    Linux上配置DNS服务器所需的bind9包。后缀是.deb的安装包,适用于Ubuntu和debian。安装及配置详情见:http://blog.csdn.net/qq_33069737/article/details/52239394

    insert-data-from-C-in-an-Oracle-database.rar_oracle

    例如,插入数据的SQL可能看起来像这样:“INSERT INTO table_name (column1, column2) VALUES (:1, :2)”,其中`:1`和`:2`是绑定变量,用于存储待插入的数据。 4. **绑定变量**:使用oci_bind_by_name函数将C变量...

    Android 出现“Can't bind to local 8602 for debugger”错误的解决方法

    Android 开发中经常会遇到一些错误,今天我们就来解决一个常见的错误:“Can't bind to local 8602 for debugger”。这个错误通常发生在Android 5.0开发中,特别是在升级JDK到1.7后。下面我们就来详细讲解这个错误...

    JQuery入门——用bind方法绑定事件处理函数应用介绍

    在JavaScript的世界里,jQuery是一个非常流行的库,它简化了DOM操作、事件处理和Ajax交互等多个方面。`bind()`是jQuery中用于绑定事件处理函数的核心方法,对于初学者来说,掌握这个方法是理解jQuery事件处理的关键...

    php mysql insert into 结合详解及实例代码

    `INSERT INTO SELECT`语句允许将从一个表中查询的结果插入到另一个表中。这两个表的结构必须匹配,即使列名不同: ```sql INSERT INTO table1 (column1, column2, ...) SELECT column1, column2, ... FROM table2; ...

    oracle执行动态sql

    除了 `EXECUTE IMMEDIATE` 外,Oracle 还提供了一个强大的包——`DBMS_SQL`,用于执行复杂的动态 SQL。与 `EXECUTE IMMEDIATE` 相比,`DBMS_SQL` 提供了更多的控制能力,尤其是在处理大型结果集和复杂事务处理方面...

    Pro DNS and BIND 10 英文版

    Pro DNS and BIND guides you through the challenging array of features surrounding DNS, with a special focus on BIND, the worlds most popular DNS implementation. This book unravels the mysteries of DNS...

    Oracle 编程接口OCCI函数库增删改的实例

    首先,创建一个`Environment`对象以初始化环境,然后创建`Connection`对象连接到数据库。接着,创建`Statement`对象,并设置SQL插入语句,例如: ```cpp Environment env; env.createEnvironment(envhp, NULL, NULL,...

    Oracle 动态sql

    在上述示例中,`DBMS_SQL.OPEN_CURSOR`打开一个游标,`PARSE`解析SQL语句,`DEFINE_COLUMN`定义返回结果的列类型,`EXECUTE`执行SQL,`FETCH_ROWS`和`COLUMN_VALUE`则用于获取并处理结果集。 四、安全性和性能 ...

    Oracle数据库OCCIDemo

    Oracle数据库OCCIDemo是一个基于Oracle Call Interface (OCCI)的C++编程示例,用于演示如何使用OCCI与Oracle数据库进行交互。OCCI是Oracle公司提供的一个C++ API,它允许开发人员直接在C++应用程序中执行SQL语句、...

    Android代码-PopupList

    This utility class can bind a edit menu for ListView, GridView, or other View easily. Welcome star, fork Screenshots How do I use PopupList? Just need a .java file and a little code. PopupList ...

    bind失败的解决方案

    绑定(bind)是网络编程中一种重要的操作,它允许将一个地址(一个接口和一个端口)绑定到一个套接字端点,以便限制可能有连接到来的接口或应当供出去的连接所使用的接口。然而,在实际应用中,bind 操作经常会遇到...

    FFmpeg Unity Bind视频处理插件.zip

    总的来说,FFmpeg Unity Bind为Unity开发者提供了一个强大的工具,帮助他们实现各种视频处理需求,无论是简单的剪辑、合并,还是复杂的实时视频操作。熟练掌握这个插件,将极大地提升你的Unity项目中视频内容的质量...

    前端开源库-abind

    1. **方法绑定**: `abind` 提供了一个方法,可以将类实例的方法绑定到其他对象,这样即使在异步操作或者事件处理中,方法也能保持正确的上下文。 2. **自动事件处理**: 库支持自动将类的方法注册为事件处理器,当...

Global site tag (gtag.js) - Google Analytics