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)抛出来的。
分享到:
相关推荐
通过上述步骤,我们成功在Red Hat Linux环境下搭建了一个基于裸设备的Oracle数据库双机热备系统。该系统能够有效提升数据库服务的稳定性和可靠性,同时还能提供自动故障转移功能,从而确保业务连续性。在整个过程中...
Android 出现“Can’t bind to local 8602 for debugger”错误的解决方法 为了适应Android5.0的开发,把JDK升级到了1.7,然后在ADT中想调试一下程序(我连接的真机),结果报错如下: [2015-04-23 15:31:37 - ddms]...
国内dns环境大家都懂的,自己搞一个也是不错的! PS:该工具为windows 64位版本,里面含有dig工具!
Linux上配置DNS服务器所需的bind9包。后缀是.deb的安装包,适用于Ubuntu和debian。安装及配置详情见:http://blog.csdn.net/qq_33069737/article/details/52239394
例如,插入数据的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 5.0开发中,特别是在升级JDK到1.7后。下面我们就来详细讲解这个错误...
在JavaScript的世界里,jQuery是一个非常流行的库,它简化了DOM操作、事件处理和Ajax交互等多个方面。`bind()`是jQuery中用于绑定事件处理函数的核心方法,对于初学者来说,掌握这个方法是理解jQuery事件处理的关键...
`INSERT INTO SELECT`语句允许将从一个表中查询的结果插入到另一个表中。这两个表的结构必须匹配,即使列名不同: ```sql INSERT INTO table1 (column1, column2, ...) SELECT column1, column2, ... FROM table2; ...
除了 `EXECUTE IMMEDIATE` 外,Oracle 还提供了一个强大的包——`DBMS_SQL`,用于执行复杂的动态 SQL。与 `EXECUTE IMMEDIATE` 相比,`DBMS_SQL` 提供了更多的控制能力,尤其是在处理大型结果集和复杂事务处理方面...
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...
首先,创建一个`Environment`对象以初始化环境,然后创建`Connection`对象连接到数据库。接着,创建`Statement`对象,并设置SQL插入语句,例如: ```cpp Environment env; env.createEnvironment(envhp, NULL, NULL,...
在上述示例中,`DBMS_SQL.OPEN_CURSOR`打开一个游标,`PARSE`解析SQL语句,`DEFINE_COLUMN`定义返回结果的列类型,`EXECUTE`执行SQL,`FETCH_ROWS`和`COLUMN_VALUE`则用于获取并处理结果集。 四、安全性和性能 ...
Oracle数据库OCCIDemo是一个基于Oracle Call Interface (OCCI)的C++编程示例,用于演示如何使用OCCI与Oracle数据库进行交互。OCCI是Oracle公司提供的一个C++ API,它允许开发人员直接在C++应用程序中执行SQL语句、...
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 操作经常会遇到...
总的来说,FFmpeg Unity Bind为Unity开发者提供了一个强大的工具,帮助他们实现各种视频处理需求,无论是简单的剪辑、合并,还是复杂的实时视频操作。熟练掌握这个插件,将极大地提升你的Unity项目中视频内容的质量...
1. **方法绑定**: `abind` 提供了一个方法,可以将类实例的方法绑定到其他对象,这样即使在异步操作或者事件处理中,方法也能保持正确的上下文。 2. **自动事件处理**: 库支持自动将类的方法注册为事件处理器,当...