ruby-on-rails – Ruby Rails Mongrel Server ODBC连接重置

我目前在IIS7的Windows 2008服务器上运行ruby on rails(ruby 1.8.7,rails 2.3.8).我使用mongrel rails运行实例,然后将实例添加到IIS7中的服务器场以供使用.

当应用程序运行时,以某种方式与数据库服务器的连接断开,似乎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错误并自动重置连接,我真的很喜欢它.有任何想法吗?

最佳答案
如果您确定表名是正确的,请检查您在模型中定义它的方式.定义应包含数据库名称和模式名称(通常为“dbo”).

对于Rails 2.x.x,它将是:

set_table_name "database_name.dbo.table_name"

对于Rails> = 3.x.x:

self.table_name = "database_name.dbo.table_name"

转载注明原文:ruby-on-rails – Ruby Rails Mongrel Server ODBC连接重置 - 代码日志