Rails中的database.yml重新连接设置为true或false

时间:2014-02-06 05:03:58

标签: ruby-on-rails

database.yml中,Rails 3和4上reconnect的默认设置为false。什么是常见设置,在什么情况下我们应该将其设置为true?感谢。

1 个答案:

答案 0 :(得分:15)

您可以将其设置为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