2009-08-27 44 views
28

Ich habe ein Ruby on Rails Projekt, das ich auf einem gehosteten Server entwickelt habe, aber mich dazu entschlossen habe, mit meiner lokalen Windows Maschine zu arbeiten.Ruby on rails Verbindungsproblem

Um zu beginnen, dachte ich, ich würde sicherstellen, dass ich einfach meine Modelle aus dem alten Projekt nehmen und sie in ein neues Projekt einfügen und sie dann in der Konsole abfragen könnte. Dies schlägt fehl.

Bearbeiten, um genaueres Problem widerzuspiegeln: Die Verbindung, die Schienen erstellt, um meine Modelle abzufragen, kann nur eine Abfrage ausführen, gibt dann die Ausnahme "Nicht verbunden" für alle nachfolgenden Abfragen. Weiß jemand was los ist? Ich habe meine Konfiguration sehr oft überprüft. Wenn es eine Einstellung auf dem mysql-Server gibt, von der ich nichts weiß, wäre ich bereit, mir das anzuschauen.

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 

Ich habe festgestellt, dass meine MySQL Datenbank-Verbindungen akzeptiert und hat die Daten und Struktur erwarte ich. Ich habe meine Verbindungen usw. überprüft. Kann jemand Licht abwerfen?

+0

sind Sie in prod, Entwickler oder Test läuft? Was passiert, wenn Sie das ändern? – marcgg

+0

Kann eine Verbindung, Abfrage schlägt fehl >> erfordern "mysql" => [] >> TestConn = Mysql.real_connect ("localhost", "lco_admin", "****", "lastcall_dev") => # >> testconn.get_server_info => "5.1.37-community" >> testconn.host_info => "localhost über TCP/IP" >> testconn.list_tables => [ "bar_schedules" , "bars", "bars_features", "getränke", "features", "preise", "wiederkehrungen", "special_schedules", "specials", "timespans"] >> testconn.query ("select * from prices") Mysql :: Fehler: Abfrage: nicht verbunden von (irb): 7: in 'Abfrage ' f rom (irb): 7 – marr75

+0

Ich erlebe genau das gleiche Problem wie du @ marr75. Ich werde definitiv dazu schreiben, wenn ich es ausarbeite! – jonsidnell

Antwort

82

läuft ich eine Lösung für dieses Problem in einem aptana forum gefunden.

Dort steht, dass die MySQL 5.1 Client-Bibliothek nicht gut mit Rails 2.2 funktioniert. Die Lösung, die sie bieten, ist einfach: Laden Sie eine ältere MySQL-Client-Bibliothek (libmySQL.dll) herunter und kopieren Sie sie in Ihren Ruby \ bin-Ordner.

Das ist für mich gearbeitet (Windows XP Ruby 1.8.6, Rails 2.3.3, MySQL 5.1.33)

+0

Süß! Arbeitete auch für mich :) – jonsidnell

+2

Vielen Dank. Es ist enttäuschend, dass an den vielen Stellen, an denen die mysql- und ruby-Projekte miteinander verlinkt sind, einschließlich Schritt-für-Schritt-Anleitungen, wie dieser Stapel unter Windows funktioniert, dieser Gegenstand nicht erwähnt wurde. – marr75

+3

Wow, froh, dass ich diesen Beitrag gefunden habe! Funktioniert jetzt super, danke für die Tipp-Jungs! –

3

Überprüfen Sie, ob Sie die neueste mysql gem haben (für Schienen> 2.1.2)

Überprüfen Sie Ihre config/database.yml Datei (Adapter, Passwörter). Überprüfen Sie, ob es richtig für alle Umgebungen gesetzt (dev, prod-Test)

Stellen Sie sicher, dass Ihre mysql

+0

Überprüft das Juwel mehrmals, überprüft alle meine Edelsteine ​​in der Tat. Ich weiß, dass die Datenbankkonfiguration korrekt ist, denn wenn ich sie absichtlich zerbricht, kann ich keine Informationen mehr über meine Konfiguration erhalten (eine oder mehrere Server-Info-Abfragen schlagen fehl). Aus dem gleichen Grund weiß ich, dass es mit Mysql kommunizieren kann und dass mysql läuft (wenn ich den Dienst deaktiviere, kann ich keine Informationen über meine Konfiguration von der Willkommensseite sehen). – marr75

1

Download eine ältere MySQL-Client-Bibliothek

+0

Antwort ist bereits gepostet. Trotzdem danke. – marr75