2009-08-27 6 views
28

J'ai un projet Ruby on Rails que je développais sur un serveur hébergé, mais j'ai décidé de travailler sur ma machine windows locale avec. Pour commencer, je pensais m'assurer que je pouvais simplement prendre mes modèles de l'ancien projet et les mettre dans un nouveau projet, puis les interroger dans la console. Cela échoue.Ruby on rails problème de connexion

Modifier pour refléter un problème plus précis: La connexion que les rails construit pour interroger mes modèles peut exécuter une seule requête puis donne l'exception "Non connecté" pour toutes les requêtes suivantes. Quelqu'un sait ce qu'il se passe? J'ai vérifié ma configuration, beaucoup. S'il y a un paramètre sur le serveur mysql que je ne connais pas, je serais prêt à regarder ça.

Stack Trace:

Price.find(1) 
ActiveRecord::StatementInvalid: Mysql::Error: query: not connected: SHOW FIELDS FROM `prices` 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract_adapter.rb:212:in `log' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/mysql_adapter.rb:320:in `execute' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/mysql_adapter.rb:466:in `columns' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1271:in `columns' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1279:in `columns_hash' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1578:in `find_one' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1569:in `find_from_ids' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:616:in `find' 
     from (irb):2 

J'ai vérifié que ma base de données MySQL accepte les connexions et les a données et structure I Expect. J'ai vérifié mes connexions, etc. Est-ce que quelqu'un peut jeter un peu de lumière?

+0

Courez-vous dans prod, dev ou test? que se passe-t-il si vous changez cela? – marcgg

+0

peut se connecter, requête échoue >> require "mysql" => [] >> testconn = Mysql.real_connect ("localhost", "lco_admin", "****", "lastcall_dev") => # >> testconn.get_server_info => "5.1.37 communautaire" >> testconn.host_info => "localhost via TCP/IP" >> testconn.list_tables => [ "bar_schedules" , "barres", "bars_features", "boissons", "features", "prix", "récurrences", "special_schedules", "specials", "timespans"] >> testconn.query ("select * from prices" Mysql :: Erreur: requête: non connecté de (irb): 7: dans 'query ' f rom (irb): 7 – marr75

+0

Je rencontre exactement le même problème que vous @ marr75. Je posterai certainement à ceci si je m'arrange! – jonsidnell

Répondre

82

J'ai trouvé une solution à ce problème dans un aptana forum.

Il y est dit que la bibliothèque client MySQL 5.1 ne joue pas bien avec Rails 2.2 La solution qu'ils proposent est simple: télécharger une ancienne bibliothèque cliente MySQL (libmySQL.dll) et la copier dans votre dossier Ruby \ bin.

Cela a fonctionné pour moi (Windows XP, Ruby 1.8.6, Rails 2.3.3, MySQL 5.1.33)

+0

Doux! Travaillé pour moi aussi :) – jonsidnell

+2

Merci beaucoup. Il est décevant que dans les nombreux endroits où les projets mysql et ruby ​​se lient les uns aux autres, y compris des guides pas à pas sur la façon de faire fonctionner cette pile sur Windows, cet élément n'a pas été mentionné. – marr75

+3

Wow, content d'avoir trouvé cet article! Fonctionne bien maintenant, merci pour le conseil les gars! –

3

Vérifiez que vous avez la dernière pierre précieuse mysql (pour rails> 2.1.2)

Vérifiez votre fichier config/database.yml (adaptateur, mots de passe). Vérifiez qu'il est correctement défini pour tous les environnements (dev, test prod)

Vérifiez que votre mysql est en cours d'exécution

+0

Vérifié la gemme plusieurs fois, vérifié tous mes gemmes en fait. Je sais que la configuration de la base de données est correcte car si je la casse délibérément, je ne suis plus en mesure d'obtenir des informations sur ma configuration (une ou plusieurs requêtes info-ish du serveur échouent). Pour cette même raison, je sais qu'il peut communiquer avec Mysql, et que mysql est en cours d'exécution (si je désactive le service, je ne peux plus voir les informations sur ma configuration depuis la page d'accueil). – marr75

1

télécharger une bibliothèque MySQL client plus

+0

La réponse est déjà postée. Merci quand même. – marr75