2010-12-13 7 views
4

Je cours actuellement ruby ​​sur rails (ruby 1.8.7, rails 2.3.8) sur un serveur Windows 2008 dans IIS7. J'utilise des rails mongrel pour exécuter les instances, puis j'ajoute les instances à une batterie de serveurs dans IIS7 à utiliser.Ruby Rails Serveur Mongrel Connexion ODBC réinitialisée

Lorsque l'application est en cours d'exécution et en quelque sorte la connexion au serveur de base de données tombe en panne, il semble que l'application des rails tente encore de se connecter en utilisant la connexion ODBC et je reçois l'erreur suivante

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' 

Cette erreur s'en va quand je redémarre les services de mongrel, cependant, je voudrais vraiment si l'application a reconnu l'erreur odbc et réinitialiser la connexion automatiquement. Des idées?

+0

Pas un answer.I'm pas sûr de la raison pour laquelle vous obtenez cette erreur , mais, essayez d'utiliser ActiveRecord :: Base.verify_active_connections! , il m'aide avec la connexion de base de données background_job perdu problème dans les rails 2.3.5. basiquement, vérifier la connexion db et reconnecter ... espérons que cela pourrait aider – andrea

Répondre

0

Pouvez-vous intercepter cette exception et essayer reconnect!?

Une fois la réinitialisation effectuée (RST?), Il est probable que l'implémentation des adaptateurs ait maintenant une connexion ou un pool de connexions non valide. Je me demande si reconnect! réinitialiser la connexion/pool de connexion et permettre au client de continuer gracieusement. Ou au moins essayer [n] fois plus avant d'abandonner.

HTH,

Z

1

Si vous êtes sûr que votre nom de la table est correcte, vérifiez la façon dont vous l'avez défini dans votre modèle. La définition doit contenir le nom de la base de données et le nom du schéma (généralement 'dbo').

Pour Rails 2.xx il sera:

set_table_name "database_name.dbo.table_name" 

Et pour Rails> = 3.xx:

self.table_name = "database_name.dbo.table_name" 
Questions connexes