开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink设置之后报错:仅能绑定要插入 LONG 列的 LONG 值 主键必须是数字类型吗?

Flink设置之后报错:java.sql.BatchUpdateException: ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值 主键必须是数字类型吗?

展开
收起
真的很搞笑 2023-12-18 08:06:20 121 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    ORA-01461错误表示只能绑定要插入LONG列的LONG值,这意味着您尝试将非数字类型的值插入到LONG类型的列中。主键可以是数字类型,也可以是其他数据类型,但必须满足数据库表的主键约束条件。

    如果您正在使用Flink连接Oracle数据库并执行插入操作,请确保您正在插入的值与目标列的数据类型匹配。如果目标列是LONG类型,则您需要将值转换为LONG类型。例如,如果您正在使用PreparedStatement来执行插入操作,可以使用setLong方法将值转换为LONG类型:

    PreparedStatement pstmt = connection.prepareStatement("INSERT INTO my_table (id, name) VALUES (?, ?)");
    pstmt.setLong(1, 123L); // 设置主键值为123
    pstmt.setString(2, "John"); // 设置name字段为"John"
    pstmt.executeUpdate();
    

    请注意,如果您的主键不是数字类型,则需要相应地更改代码以适应您的数据类型。

    2023-12-18 14:35:12
    赞同 展开评论 打赏
  • aac8f85eea9f37ff6105f26e353e24b1.png
    ,此回答整理自钉群“【③群】Apache Flink China社区”

    2023-12-18 11:33:04
    赞同 展开评论 打赏
  • ORA-01461 错误通常与尝试插入超过特定长度的字符串值到一个 LONG 列有关,而不是与主键的数据类型有关。在 Oracle 数据库中,LONG 数据类型用于存储大的文本数据,但是它有一些限制,包括不能直接通过绑定变量插入超过 32760 字节的数据。

    这个错误的出现通常是因为你在插入数据时,某个字段(不一定是主键)的值超过了 LONG 类型的最大可接受长度。如果你的主键是一个字符串类型,并且其长度超过了 LONG 类型的限制,那么你应该考虑更改主键的类型为 VARCHAR2、CLOB 等其他可以存储更长字符串的类型。

    至于主键的数据类型,它并不必须是数字类型。主键可以是任何能够唯一标识表中每一行的数据类型,包括数字、字符串或者复合键等。然而,通常建议使用整数类型作为主键,因为它们更高效且易于处理,但这也取决于具体的业务需求和数据模型设计。

    要解决 ORA-01461 错误,你需要检查以下几点:

    1. 确定哪个字段触发了这个错误,检查该字段的数据类型和你试图插入的值的长度。
    2. 如果该字段确实是 LONG 类型,且你的插入值超过了 32760 字节,考虑将该字段的数据类型更改为 VARCHAR2、CLOB 或其他更适合的类型。
    3. 在插入数据时,确保你的应用程序代码正确地处理了大数据量的字符串,可能需要分段插入或使用适合的数据类型。
    2023-12-18 09:27:18
    赞同 1 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载