mysql连接错误2_ruby – 如何使用em_mysql2解决’连接仍在等待结果’错误

我在Goliath(eventmachine)下使用em_

mysql2的activerecord.最奇怪的事情发生在我的用户模型上.当我第一次对/ users进行POST时,它只能按预期找到.当我做第二次POST时,我收到错误.

Mysql2::Error: This connection is still waiting for a result, try again once you have the result: INSERT INTO `users` (... and so on ...)

对于我的任何其他模型或路线,都不会发生这种情况.我假设如果数据库连接处于混乱状态,我会在其他请求上看到相同的错误但是没有 – 所有其他数据库更新和GET请求似乎都运行正常.

有谁知道这只会发生在我的用户模型和仅用于User.save操作的情况下?活动记录是否以某种方式存储它用于执行Model.save的数据库连接并重新使用它?

编辑:

当我写这个问题时我不知道提到我使用ActiveRecord作为ORM.我也没有提到我异步向Mongo数据库发送请求以获取用户身份验证信息.

我的解决方案

事实证明,这个错误发生的唯一时间是来自Mongo的响应在MySQL的响应之前回来,这导致MySQL响应被不同的光纤接收而不是发出请求的光纤.由于我使用的MySQL2光纤实现使用光纤的objectID来管理连接,这似乎导致了这个问题.

ActiveRecord中的整体连接池MySql2 Fibers Goliath不是完全支持的配置. (从那时起可能会有一些进展)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值