登录
首页 >  Golang >  Go问答

使用 IN() 运算符时,GoCQL 在 CQL bigint 列上返回“无法将 int64 编组为 bigint”错误

来源:stackoverflow

时间:2024-03-04 23:48:28 320浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《使用 IN() 运算符时,GoCQL 在 CQL bigint 列上返回“无法将 int64 编组为 bigint”错误》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我在 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 几乎总是不好的做法,我们绝对不建议在生产中使用它,因为它的性能可能非常难以预测。 p>

同样,尽可能避免使用 IN() 运算符。使用 2 或 3 个元素是可以的,但超过这个数量可能会损害应用程序和集群的性能。

在大多数情况下,使用 ALLOW FILTERINGIN() 运算符表明您的数据模型错误,需要重新设计表。干杯!

今天关于《使用 IN() 运算符时,GoCQL 在 CQL bigint 列上返回“无法将 int64 编组为 bigint”错误》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>