【问题标题】:Getting Java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column.. While inserting the data获取 Java.sql.SQLException:ORA-01461:只能绑定 LONG 值以插入 LONG 列。在插入数据时
【发布时间】:2012-02-11 10:15:25
【问题描述】:

我正在使用带有 Weblogic 8 服务器的 Oracle 9.2。我从一个表中获取数据,然后我再次更新到具有相同数据的同一个表中。

我收到了错误

Java.sql.SQLException: ORA-01461: 只能绑定 LONG 值以插入到 LONG 列中。

该列的类型为varchar2(4000 字节)。

有人可以告诉我为什么会发生此错误吗?如果您喜欢任何其他信息,请告诉我。下面是我的 SQL 查询:

/**
 * @jc:sql statement::
 * UPDATE CORRECTIVE_ACTION SET
 *     CA_ID = {dt.caId}, 
 *     CA_NBR = {dt.caNbr}, 
 *     CAPA_PLAN_ID = {dt.capaPlanId}, 
 *     OBJ_EVIDENCE_COMP = {dt.objEvidenceComp}, 
 *     APPLICABLE_ELSE_WHERE = {dt.applicableElseWhere}, 
 *     JUSTIFICATION = {dt.justification}, 
 *     MOE = {dt.moe}, 
 *     COMPLETION_DATE = {dt.completionDate}, 
 *     EXTENSION_DUE_DATE = {dt.extensionDueDate}, 
 *     STATUS_CD = {dt.statusCd},
 *     SYSTEM_STATUS_CD = {dt.systemStatusCd},  
 *     ROOT_CAUSE_CD = {dt.rootCauseCd}, 
 *     DESCRIPTION = {dt.description}, 
 *     CA_TYPE = {dt.caType}, 
 *     CREATED_BY = {dt.createdBy}, 
 *     CREATED_DATE = {dt.createdDate}, 
 *     MODIFIED_BY = {dt.modifiedBy}, 
 *     MODIFIED_DATE = {dt.modifiedDate},
 *     COMPLETION_DUE_DATE = {dt.completionDueDate}
 * WHERE CA_ID = {dt.caId}
 * ::
 */
void updateCorrectiveAction(CorrectiveActionDT dt) throws SQLException;

【问题讨论】:

  • 请过去您的 sql 查询,因为您遇到错误...
  • 也可以在 stackoverflow 上搜索Java.sql.SQLException: ORA-01461: can bind a LONG 。有很多答案...有些可能对你有帮助
  • 我已经通过在数据源的服务器属性中添加:“oracle.jdbc.RetainV9LongBindBehavior=true”解决了这个问题。

标签: java sql oracle


【解决方案1】:

以下链接可能对您有所帮助...

CHAR semantics and ORA-01461

也可以尝试在Stackoverflow搜索你的问题,你会得到答案...

【讨论】:

  • 我已经通过在数据源的服务器属性中添加:“oracle.jdbc.RetainV9LongBindBehavior=true”解决了这个问题。
【解决方案2】:

我已通过在数据源的服务器属性中添加:oracle.jdbc.RetainV9LongBindBehavior=true 来解决此问题。

【讨论】:

    【解决方案3】:

    如果您正在使用休眠并尝试插入大于 4000 个字符的字符串,它可能会在插入时将其解释为 LONG 而不是 VARCHAR2。 添加一个子字符串为我们修复了它

    entity.setColVal(colVal == null||colVal.length() < 4000 ? colVal : colVal.substring(0,4000));
    

    如果您不想自己进行空值和长度检查,也可以使用StringUtils.substring(colVal, 0, 4000);

    【讨论】:

      【解决方案4】:

      当 DB 列大小小于插入值时,可能会发生此错误。

      【讨论】:

        猜你喜欢
        • 2014-08-09
        • 2020-06-22
        • 2014-09-20
        • 2012-07-08
        • 1970-01-01
        • 2013-06-01
        • 2017-08-29
        • 2017-05-13
        • 1970-01-01
        相关资源
        最近更新 更多