使用cequel直接调用查询时发生argumenterror

oaxa6hgo  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(380)

我刚刚将cequel从1.10.0更新到了3.2.1,我拥有以下模型:

  1. module Messaging
  2. class ThreadsForUser
  3. include Cequel::Record
  4. include Sunspot::Cequel
  5. self.table_name = :messaging_threads_for_users
  6. key :user_id, :bigint
  7. key :thread_id, :timeuuid, order: :desc

我有以下查询(这在1.1.0中正常工作):

  1. connection.execute(
  2. "DELETE FROM #{table_name} WHERE thread_id = ? AND user_id in (?)",
  3. thread_id, user_ids
  4. )

但是3.2.1我收到了:

  1. ArgumentError: argument for "user_id" must be bigint, [3] given

哪里 user_ids 是一个上面有3的数组。不知道该怎么解决,知道吗?

raogr8fs

raogr8fs1#

您需要使用如下语法:

  1. DELETE FROM #{table_name} WHERE thread_id = ? AND user_id in ?

在这种情况下,完整列表将由驱动程序替换为 in ,而在你的变体中,你通过了 IN 由一个元素组成-这是有效的语法,您只需要传递整数值而不是整数列表。

相关问题