Mysql2 ruby gem prepared语句返回nil

Mysql2 ruby gem prepared语句返回nil,ruby,mysql2,Ruby,Mysql2,我正在使用Mysql2gem通过ruby脚本进行一些基本的数据库更新。每当我通过prepared语句进行更新时,我得到的结果值为nil, 即使数据库行正在更新 Env: ruby 2.2.3 mysql2 0.4.3 有关查询: CLIENT = Mysql2::Client.new(host: '<host>', username: '<uname>', password: '<pwd>', database: '<db>', read_tim

我正在使用
Mysql2
gem
通过
ruby
脚本进行一些基本的数据库更新。每当我通过
prepared语句
进行更新时,我得到的结果值为
nil
, 即使数据库行正在更新

Env:
ruby 2.2.3
mysql2 0.4.3
有关查询:

CLIENT = Mysql2::Client.new(host: '<host>', username: '<uname>', password: '<pwd>', database: '<db>', read_timeout: 10)

update_str = %Q(UPDATE marcom
SET `value` = "<subject>"
WHERE campaign_id = ?
AND flow_key = "<xyz>")

stmt = CLIENT.prepare(update_str)

result = stmt.execute(campaign_id) #campaign_id coming from somewhere else
# result is nil
CLIENT=Mysql2::CLIENT.new(主机:“”,用户名:“”,密码:“”,数据库:“”,读取超时:10)
更新\u str=%Q(更新马可姆)
设置“值”=“”
其中活动_id=?
和流_键=”)
stmt=CLIENT.prepare(更新)
结果=stmt.execute(活动id)#来自其他地方的活动id
#结果是零
所以我的问题是

  • 更新成功后,我不应该返回一个
    Mysql2结果
    对象吗
  • 即使更新成功,当结果为零时,我如何知道某些更新是否成功

  • 如果您想做底层数据库工作,我发现使用一些最小的方法(比如)会有很大帮助。直接使用驱动程序通常是非常不愉快的,因为它不是设计为易于使用,只是为了完成工作。像Sequel这样的图层在不限制您的风格的情况下为您提供了更多的功能。@tadman我查看了Sequel,它非常令人兴奋。我刚刚被Mysql2 gem准备好的声明的这种行为难住了。Sequel很好,因为你可以从小处着手,并根据需要进行更多的挖掘。相比之下,ActiveRecord相当笨重,但在某些方面也很好。