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

2024-01-11

我遇到一个问题,我正在更新数据库中的数百万行,因此我不想单独更新每一行,而是希望将约 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby mysql2 单个查询中的多个语句 的相关文章

随机推荐

  • 检测objective-c中for()循环的真正结束

    我将在我的应用程序中显示一种 UIActivityIndi catorView 同时在 for 循环内解析多个 JSON 对象 我不知道必须在哪里放置 UIActivityIndi catorView startAnimating 和 UI
  • keyof T 的默认类型不能用于索引类型 T

    我正在尝试重构此代码以使用静态方法 因为该类仅用于命名空间和Query equal
  • 检查包含任意顺序的 3 个连续字母和 2 个数字的字符串

    我似乎无法理解这个问题 我想我应该在这里寻求一些帮助 基本上我正在验证密码字段 要求如下 必须包含3个连续字母 必须包含至少 2 位数字 可以是任何顺序 例如 1abc342 abc24g3 11abcsjf 这是我到目前为止所拥有的 但我
  • WebSphere MQ 确认和回复队列

    我们通过远程队列定义 CLIENT DATA 传输队列 发送 接收通道等 从队列管理器 QM MINE 队列管理器 QM CLIENT 和队列 CLIENT DATA 发送 XML 文本消息 消息到达目的地 客户端的 CLIENT DATA
  • 通过比较另一个图像的强度来更改图像的强度 - OpenTK

    我有两个图像 我必须找到第一张图像中强度大于 0 8 的点 同时 我必须找到第二张图像在相同点上的强度 并且需要使用阈值 滑块值 范围从 0 到 1 调整第二张图像在相同点上的光线 我已经做了如下 点上出现黑色或深色区域的强度大于 0 8
  • 将 csv 文件的前 x 行读取到新的输出文件中?

    如何只复制 a 的前 x 行csv文件到一个新的csv通过终端文件 Brief 您将使用 Linux 终端 控制台 Use head n NUMBEROFLINES file csv获得第一NUMBEROFLINES的线路 使用 shell
  • 选择具有特定值的行之后的行

    嘿 再次 我仍然掌握查询和其他东西 所以请原谅所有常见的 SQL 问题 8 无论如何 我试图选择某个值之后的行 不明白 好吧 这就是它实际的样子 表 消息 message id thread id user id to id body me
  • 跨浏览器剪贴蒙版

    我的网站有导航 以矩形按钮列表的形式呈现有圆角 每个按钮都应该有自己的自定义背景 即照片 照片比按钮大 并且应该随着鼠标在该按钮上的移动而移动 我们有一种效果 就像我们透过窗户看一样 导航具有以下 HTML 结构 ul gt li gt a
  • Android CalendarProvider 事件颜色

    我最困惑的是如何在 Android CalendarProvider 中使用颜色 我可以添加事件 但是当我尝试插入具有特定颜色的事件时 默认日历颜色 浅蓝色 似乎会忽略此首选项 我想我不太确定如何使用颜色 我想知道是否有人可以好心地解释一下
  • 延迟容器启动,直到 pod 中的其他容器启动

    我正在研究一个用例 其中 sidecar 容器在更改主容器的目录权限时连续运行 shell 脚本 我只想在 pod 中的主容器准备就绪后才启动侧容器 我正在查看 Init Containers 我发现当我们具有 pod 间依赖关系时 ini
  • JavaScript 中的 Node js / MongoDB 副本集数组

    警告 我是一名新手程序员 更多的是系统管理员 我们获得了一个使用 MongoDB 的 Node js 应用程序 据我所知 mongo js 文件使用 mongojs 和 monq java 类 它只设置了一个 MongoDB 我正在尝试设置
  • Flask AttributeError:模块“flask.json”没有属性“JSONEncoder”

    我的烧瓶应用程序在升级之前可以正常运行 当忘记重置密码时 我在发送电子邮件时遇到了问题 为了尝试解决这个问题 我最近升级了我的 Flask 应用程序的一些模块 我使用当前版本升级的模块是 电子邮件验证器 2 0 0 post2 烧瓶 2 3
  • 如何在C#中动态创建表

    table border 1 tr td Record 1 td tr tr td 1 td td 2 td td 3 td tr tr td a td td b td td c td tr tr td m td td n td td o
  • 递归 JSON.stringify 实现

    我正在尝试学习 Javascript 中的递归 所以我想我应该重写本机JSON stringify使用递归函数作为对自己的挑战 我几乎让我的代码可以工作 var my stringify function obj value obj Obj
  • 如何清理 WordPress 中的用户密码信息?

    我正在 WordPress 网站上的自定义注册表单中捕获用户名 电子邮件和密码 我正在使用以下方式清理用户名sanitize user and sanitize email 清理电子邮件地址 例如 username sanitize use
  • 如何向图像添加文字?

    在我的项目中 我使用 iText 生成 PDF 文档 假设页面的高度为 500pt 1 个用户单位 1 点 并且我在页面上写入了一些文本 然后是图像 如果内容和图像要求小于 450pt 则文本在图像之前 如果内容和图像超过 450pt 文本
  • 如何在Python 2.7中设置HTTP代理?

    我正在尝试运行一个安装 pip get pip py 的脚本 但由于我的网络位于 HTTP 代理后面 导致连接超时 有什么方法可以在我的 Python 2 7 安装中配置 HTTP 代理 以便能够安装我想要安装的内容吗 注意 我使用的是Wi
  • 在包含 1 亿个字符串的大型文本文件中进行高效的子字符串搜索(无重复字符串)

    我有一个很大的文本文件 1 5 GB 有 1 亿个字符串 没有重复的字符串 所有字符串都在文件中逐行排列 我想在java中制作一个wep应用程序 以便当用户给出关键字 子字符串 时 他可以获得包含该关键字的文件中存在的所有字符串的计数 我已
  • 如何检测 jquery 中的文档何时添加了新元素?

    如何检测 jquery 中的文档何时添加了新元素 解释 我想知道何时将具有 column header 类的元素添加到文档中 因为我计划在这些元素上运行一些 javascript 我怎样才能做到这一点 我使用 jQuery javascri
  • Ruby mysql2 单个查询中的多个语句

    我遇到一个问题 我正在更新数据库中的数百万行 因此我不想单独更新每一行 而是希望将约 1000 条语句的组连接到单个查询中 我已经像这样启用了 MULTI STATEMENTS client Mysql2 Client new host g