2010-12-13 93 views
4

我目前在IIS7中的Windows 2008服務器上運行ruby on rails(ruby 1.8.7,rails 2.3.8)。我正在使用mongrel rails來運行實例,然後將這些實例添加到IIS7中的服務器場以供使用。Ruby Rails Mongrel Server ODBC連接重置

當應用程序正在運行,並且以某種方式對數據庫服務器的連接出現故障,它似乎是Rails應用程序仍然在試圖使用ODBC連接來連接,我收到以下錯誤

ActiveRecord::StatementInvalid (ODBC::Error: S0002 (208) [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'sessions_table'.: SELECT TOP 1 * FROM [sessions_table] WHERE ([sessions_table].[session_id] = 'e6a7e7bc3b72edf2662c2b97793694d2')): 
    vendor/gems/activerecord-sqlserver-adapter-2.3.10/lib/active_record/connection_adapters/sqlserver_adapter.rb:946:in `raw_select' 
    vendor/gems/activerecord-sqlserver-adapter-2.3.10/lib/active_record/connection_adapters/sqlserver_adapter.rb:923:in `select' 
    app/controllers/application_controller.rb:107:in `set_locale' 
    haml (3.0.17) [v] lib/sass/plugin/rack.rb:41:in `call' 
    haml (3.0.17) [v] lib/sass/plugin/rack.rb:41:in `call' 
    config/initializers/mongrel.rb:62:in `dispatch_cgi' 

此錯誤當我重啓mongrel服務時會消失,但是,如果應用程序識別出odbc錯誤並自動重置連接,我真的很喜歡它。有任何想法嗎?

+0

不是一個answer.I'm不知道爲什麼你得到這個錯誤的,但是,嘗試使用ActiveRecord :: Base.verify_active_connections! ,它幫助我在rails 2.3.5中使用background_job數據庫連接丟失問題。基本上它檢查數據庫連接和重新連接...希望這可以幫助 – andrea 2011-02-03 00:19:34

回答

0

你能捕捉這個異常並嘗試reconnect!

一旦重置發生(RST?),它很可能是現在適配器的推進有一個無效的連接或連接池。我想知道如果reconnect!將重置連接/連接池,並允許客戶端正常繼續。或者至少在放棄之前嘗試更多次。

HTH,

ž

1

如果你確定你的表名是正確的,然後檢查你在你的模型中定義的方式。定義應該包含數據庫名稱和模式名稱(通常是'dbo')。

對於Rails開發2.xx的將是:

set_table_name "database_name.dbo.table_name" 

而且爲Rails> = 3.xx的:

self.table_name = "database_name.dbo.table_name"