【问题标题】:database.yml in Rails reconnect set to true or falseRails 重新连接中的 database.yml 设置为 true 或 false
【发布时间】:2018-05-15 17:16:58
【问题描述】:

database.yml 中,Rails 3 和 4 上 reconnect 的默认设置是 false。常用设置是什么,什么情况下应该设置为true?谢谢。

【问题讨论】:

  • 我认为,当您希望数据库驱动程序在连接失败后重新连接时,您将其设置为 true。 :)
  • @SergioTulentsev 那我不知道为什么要把它设置为false...嗯...

标签: ruby-on-rails


【解决方案1】:

您可以将其设置为 true。这个选项是在 Rails 2.3 中引入的

MySQL 在其连接中支持重新连接标志 - 如果设置为 true,则客户端将在放弃连接之前尝试重新连接到服务器,以防连接丢失。您现在可以在 database.yml 中为您的 MySQL 连接设置 reconnect = true 以从 Rails 应用程序中获取此行为。

Rails 团队将此选项默认设置为“false”,因为他们不想更改现有应用程序的行为。

但是如果我们设置reconnect = true,就会有一些副作用。它不是事务安全的。事实上,MySQL documentation 明确指出自动重新连接功能会影响事务。

回滚所有活动事务并重置自动提交模式。

不是为处理这个问题而编写的应用程序很容易崩溃。该文档还列出了由自动重新连接功能引起的许多其他副作用,所有这些都可能导致未编写的应用程序无法预期该行为无法正常运行或失败。

检查:

rails 2.3 release notes

mysql-reconnect-value-doesnt-stick

see this StackOverflow question

【讨论】:

    猜你喜欢
    • 2020-09-04
    • 2013-12-23
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2015-02-26
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多