cassandra CQL插入返回“CodecNotFoundException:找不到所请求操作的编解码器:[列出< varchar>< ->java.util.哈希Map]”

mutmk8jj  于 2022-11-05  发布在  Cassandra
关注(0)|答案(2)|浏览(198)

我想我的代码和查询中遗漏了一些东西。下面的代码给了我下面的错误(在代码下面)。
我认为这是因为我的数据和表不匹配,但一切看起来都很好。
有人能帮帮我吗?

public void insertFarmers( \
  int id, String city, HashMap<String, String>the_farmers, List<String>foods, \
  List<String> delivery, int food_id, int cost, HashMap<String, String>food_item, \
  String unit) {
    Cluster cluster = Cluster.builder()
        .addContactPoints(serverIP)
        .build();
    try (Session session = cluster.connect("farm_db")) {
        String insert_query = "INSERT INTO farmers \
            (farmer_id, city, foods, delivery, the_farmers, \
            food_id, cost, food_item, unit) \
            VALUES (?,?,?,?,?,?,?,?,?)";
        PreparedStatement pStatement = session.prepare(insert_query);
        BoundStatement bStatement = pStatement.bind(id, city, the_farmers, foods, \
            delivery, food_id, cost, food_item, unit);
        session.execute(bStatement);
    }
}

错误:
第一个

jdgnovmf

jdgnovmf1#

该错误指示架构和代码之间不匹配。
表中的一列具有CQL类型list<varchar>,但您插入的HashMap数据类型与CQL list不兼容。
关于如何提出好的问题的友好注解。一般指导是您(a)提供问题的良好摘要,包括软件/组件版本、完整的错误消息+完整的堆栈跟踪;(B)描述你试图解决问题的方法,以及你所做调查的细节;以及(c)复制问题的最小样本代码。
在您的例子中,您需要提供表模式,因为它与回答您的问题相关。

pw9qyyiw

pw9qyyiw2#

您的架构与代码不匹配。您有一个类型为list<text>的列,但试图插入map<text, text>

相关问题