gpt4 book ai didi

mysql - Ruby mysql2 单个查询中的多个语句

转载 作者:可可西里 更新时间:2023-11-01 07:16:53 25 4
gpt4 key购买 nike

我遇到了一个问题,我正在更新数据库中的数百万行,因此我不想单独更新每一行,而是想将 ~1000 条语句组连接到一个查询中。

我像这样启用了 MULTI_STATEMENTS

client = Mysql2::Client.new(:host => 'localhost', :database => 'mehdb', :username => "root", :password => "", :flags => Mysql2::Client::MULTI_STATEMENTS)

这是我正在运行的代码示例

sql = "SELECT id, x FROM pew WHERE x IS NULL LIMIT 1000"

results = db_read.query(sql)

while results.count > 0

updates = ''

results.each do |r|
updates += "UPDATE pew SET x = 10 WHERE id = #{r['id']};"
end

db_write.query(updates) unless updates.empty?

results = db_read.query(sql)
end

这项工作在第一次运行时没问题,但是当它触发第二组更新时,我收到此错误消息

`query': Commands out of sync; you can't run this command now (Mysql2::Error)

有没有人遇到过这个?或者对另一种方法有什么建议吗?

最佳答案

这个问题的简短答案是当启用 MULTI_STATEMENTS 时,mysql 希望您处理查询的结果。

快速修复是在每组多个更新语句之后执行类似的操作

  while db_write.next_result
db_write.store_result rescue ''
end

关于mysql - Ruby mysql2 单个查询中的多个语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11204221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com