2014-02-06 40 views
4

database.yml中,Rails 3和4上的reconnect的默認設置爲false。什麼是常用設置,在什麼情況下我們應該設置爲true?謝謝。將Rails reconnect中的database.yml設置爲true或false

+1

當你想DB驅動程序連接失敗後重新將其設置爲true,我想。 :) –

+1

看到這個:http://stackoverflow.com/questions/1538900/under-what-c​​ircumstances-would-you-want-rails-to-be-set-not-to-reconnect-to-mysq?rq= 1 –

+0

@SergioTulentsev然後我不知道爲什麼要把它設置爲「假」......嗯...... – Victor

回答

11

您可以將其設置爲true。此選項Rails中引入2.3

MySQL支持在其連接的連接標誌 - 如果設置爲true,那麼客戶端將嘗試在連接丟失的情況下,放棄之前重新連接到服務器。您現在可以在database.yml中爲您的MySQL連接設置reconnect = true,以從Rails應用程序獲取此行爲。

Rails的團隊設置該選項默認爲「假」,因爲他們並不想改變現有的應用程序的行爲。

但有些副作用是沒有,如果我們設定reconnect = true。它不是事務安全的。MySQL documentation實際上明確指出自動重新連接功能會影響事務。

任何活動的事務回滾,自動提交模式被重置。

未寫入的處理,這可能輕鬆突破應用。該文檔還列出了由自動重新連接功能引起的一系列其他副作用,所有這些都可能導致未編寫的應用程序預期行爲發生錯誤或失敗。

檢查:

rails 2.3 release notes

mysql-reconnect-value-doesnt-stick

see this stackoverflow Qn

相關問題