我在cassandra中有两个bigint类型的列。
使用gocql,我想使用IN子句从这些列中检索值。
我的查询看起来像这样-
QUERY := select column1,column2,column3 from tableName
where id1 in (?)
and id2 in (?)
ALLOW FILTERING;
我从我的代码中调用这个查询,像-
query := db.CassandraSession.Query(QUERY, Ids1, Ids2)
,其中Ids1和Ids2是int64类型的两个切片(即[]int64)
当使用 执行查询时
iter := query.Iter()
for iter.Scan(.....
)
err := iter.Close()
我得到错误can not marshal []int64 into bigint
谁能帮我解决吗?
我怀疑问题出在你的代码中,但我不得不承认我只是猜测,因为你的帖子中缺乏信息。
你需要提供额外的信息,使别人更容易帮助你。至少,您应该提供复制问题的详细信息:
- 最小表模式示例 最小示例代码
作为一个旁注,但非常重要的一点是,在应用程序查询中使用ALLOW FILTERING
几乎总是不好的做法,我们绝对不建议在生产中使用它,因为它的性能非常不可预测。
IN()
操作符。使用2或3个元素是可以的,但超过这个数量就会对应用程序和集群的性能产生不利影响。
在大多数情况下,使用ALLOW FILTERING
或IN()
操作符表明数据模型是错误的,需要重新设计表。干杯!