【问题标题】:How to reset a mongoid 3 database connection如何重置 mongoid 3 数据库连接
【发布时间】:2012-09-27 16:03:41
【问题描述】:

在 Mongoid 2.x 中,可以执行 Mongoid.database.connection.close 来重置数据库连接。这个特定的 API 在 Mongoid3 中不再可用,重置连接的新方法是什么?

动机:在查询进行时中断查询 (ctrl-c) 会终止您的连接。任何后续查询都将挂起。此外,抛出的错误(例如超时)也会做同样的事情(请参阅:http://simple10.com/rescuing-from-racktimeout-to-close-mongodb-connection)。

【问题讨论】:

标签: mongoid mongoid3 moped


【解决方案1】:

我找到了解决办法!

Mongoid::Sessions.default.disconnect

Model.collection.database.session.disconnect

如果您ctrl-c 中断控制台中的查询,这将正确重置连接。

【讨论】:

    【解决方案2】:

    事实证明,Mongoid3 的替代 mongo 驱动程序 Moped 实际上会自动处理重试连接。

    https://github.com/mongoid/moped/blob/master/lib/moped/node.rb#L115

    【讨论】:

    • 嗯,如果我在控制台上 ctrl-c 进行 mongoid 查询,我似乎无法找回它。必须退出控制台并重新启动。你有没有找到解决方案?
    • 如果您使用的是 mongoid 2.x,您可以致电 Mongoid.database.connection.close 重新连接。
    • 但是如何访问 Moped Node 实例?
    【解决方案3】:

    除了断开特定会话

    Mongoid::Sessions.default.disconnect

    您也可以通过

    断开所有会话

    Mongoid::Sessions.disconnect

    您可以获得所有活动会话的列表

    Mongoid.sessions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 2015-12-13
      相关资源
      最近更新 更多