开发者社区 > 大数据与机器学习 > 实时数仓 Hologres > 正文

Hologres 使用 put.setObject()报异常

使用 holoClient 的 put.setObject(),在创建put 的表中确实有CONS_ID 的字段,但是系统任然会报错: can not found column named CONS_ID ,求解答

代码参考如下: TableSchema schema0 = client.getTableSchema("t0"); Put put = new Put(schema0); put.setObject("CONS_ID", 1);

展开
收起
游客ppxuwh226jygg 2023-06-05 16:05:40 57 0
3 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    根据您提供的信息,问题可能是由于实际的表结构与预期不符所致。在当前情况下,您在创建 put 对象时使用了 TableSchema 对象来指定表结构,但是仍然遇到了“找不到列名为 CONS_ID”的错误。

    建议您从以下几个方面进行排查和解决:

    1. 检查数据源表的结构

    在您执行 put 操作之前,请确保检查实际数据源表中的结构,并确认 CONS_ID 列确实存在于该表中。可以通过 Hologres 控制台或客户端工具来查看表结构,例如:

    DESCRIBE table_name;
    

    请将 table_name 替换为您实际使用的表名,并确认 CONS_ID 列是否存在。

    1. 检查 TableSchema 对象的设置

    在使用 TableSchema 对象来配置 Put 操作时,请确保正确设置列名和数据类型。您可以通过以下代码来创建 TableSchema 对象:

    TableSchema schema0 = new TableSchema.Builder()
        .addColumn(new Column("CONS_ID", PGDataType.BIGINT))
        // Add other columns if needed
        .build();
    

    请注意,上述代码中的 Column 对象包含列名和数据类型字段,您需要将其中的 CONS_ID 更改为您实际使用的列名,PGDataType.BIGINT 更改为您实际使用的数据类型。

    1. 检查 put.setObject() 方法的调用

    在使用 Put 对象设置列值时,请使用正确的列名和值类型。您可以通过以下代码来设置 CONS_ID 列的值:

    put.setObject("CONS_ID", Long.valueOf(1));
    

    上述代码中的 "CONS_ID" 参数为列名字符串,Long.valueOf(1) 为对应的值类型。

    2023-06-05 22:09:04
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    根据您提供的信息,put.setObject()报异常“can not found column named CONS_ID”,可能是由于以下原因之一导致的:

    1. CONS_ID 字段的大小写不一致:请确保在创建表格模板时,CONS_ID 字段的大小写与您在 put.setObject() 中使用的一致。如果表格模板中使用的是小写,那么在 put.setObject() 中也必须使用小写。

    2. 表格模板中没有 CONS_ID 字段:请确保在创建表格模板时,已经添加了名为 CONS_ID 的字段。如果未添加该字段,则会出现“can not found column named CONS_ID”异常。

    3. 表格模板中的 CONS_ID 字段被删除了:如果您之前已经创建了名为 CONS_ID 的字段,但是后来删除了该字段,则在执行 put.setObject() 时会出现“can not found column named CONS_ID”异常。请确保名为 CONS_ID 的字段已经存在于表格模板中,并且没有被删除。

    4. 表名或表格模板名不正确:请确保您正在操作的表名或表格模板名正确。如果表名或表格模板名不正确,则可能会导致 put.setObject() 找不到相应的列。

    2023-06-05 18:50:46
    赞同 展开评论 打赏
  • 根据您提供的信息,可能是由于 CONS_ID 字段在表中不存在,或者其命名与实际字段名不符导致的,请尝试以下操作:

    确认 CONS_ID 字段是否存在。可以通过 holoClient.getTableSchema("t0") 获取表结构信息,并检查其中是否包含 CONS_ID 字段。

    确认 CONS_ID 字段命名是否正确。CONS_ID 字段命名应该与创建表时指定的字段名保持一致,否则会出现类似于 "can not found column named CONS_ID" 的错误提示。请检查创建表时所使用的字段名和实际命名情况,并确保二者一致。

    确认 put.setObject() 方法中指定的值是否正确。按照您提供的代码,put.setObject("CONS_ID", 1) 指定了 CONS_ID 字段的值为 1。请确认该值类型、格式等是否正确,并符合实际要求。

    2023-06-05 17:25:25
    赞同 展开评论 打赏

本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975

相关产品

  • 实时数仓 Hologres
  • 相关电子书

    更多
    实时数仓Workshop(广州站)- 李佳林 立即下载
    阿里云实时数仓Hologres技术揭秘2.0 立即下载
    实时数仓Hologres技术实战一本通2.0版(下) 立即下载