2009-08-27 15 views
28

Mam projekt Ruby on Rails, który opracowałem na hostowanym serwerze, ale zdecydowałem się na pracę z moją lokalną maszyną Windows.Problem z połączeniem z Ruby on rails

Na początek Pomyślałem, że upewnię się, że mogę po prostu zabrać moje modele ze starego projektu i umieścić je w nowym projekcie, a następnie wysłać do nich zapytanie w konsoli. To się nie udaje.

Edytuj, aby lepiej określić dokładniejszy problem: Połączenie, które buduje szyny w celu wysłania zapytania do moich modeli, może uruchomić tylko jedno zapytanie, a następnie daje wyjątek "Brak połączenia" dla wszystkich kolejnych zapytań. Ktoś wie, co się dzieje? Sprawdziłem moją konfigurację, dużo. Jeśli jest jakieś ustawienie na serwerze mysql, o którym nie wiem, chętnie bym na to spojrzał.

stosu Ślad:

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 

I zostały zweryfikowane, że moja baza danych MySQL akceptuje połączeń i ma strukturę danych i ja się spodziewać. Sprawdziłem dwa razy moje połączenia itp. Czy ktoś może rzucić trochę światła?

+0

są uruchomione w prod, dev lub testu? co się stanie, jeśli to zmienisz? – marcgg

+0

Może się połączyć, zapytanie nie powiedzie się >> wymaga "mysql" => [] >> testconn = Mysql.real_connect ("localhost", "lco_admin", "****", "lastcall_dev") => # >> testconn.get_server_info => "5.1.37-community" >> testconn.host_info => "localhost za pośrednictwem protokołu TCP/IP" >> testconn.list_tables => [ "bar_schedules" , "bary", "bars_features", "drinks", "features", "prices", "recurrences", "special_schedules", "specials", "timespans"] >> testconn.query ("wybierz * z cen")) Mysql :: Błąd: zapytanie: brak połączenia od (irb): 7: w 'zapytaniu ' f rom (irb): 7 – marr75

+0

Mam dokładnie ten sam problem co ty @ marr75. Zdecydowanie zaksięguję do tego, jeśli to rozwiążę! – jonsidnell

Odpowiedz

82

Znalazłem rozwiązanie tego problemu w aptana forum.

Mówi, że biblioteka klienta MySQL 5.1 nie gra dobrze z Railsami 2.2 Oferowane przez nich rozwiązanie jest proste: pobierz starszą bibliotekę klienta MySQL (libmySQL.dll) i skopiuj ją do swojego folderu Ruby \ bin.

ten pracował dla mnie (Windows XP, Ruby 1.8.6, Rails 2.3.3, MySQL 5.1.33)

+0

Słodki! Pracował też dla mnie :) – jonsidnell

+2

Dziękuję bardzo. To rozczarowujące, że w wielu miejscach, w których projekty mysql i ruby ​​łączą się ze sobą, w tym instrukcje krok po kroku, jak sprawić, aby ten stos działał w systemie Windows, ten element nie został wspomniany. – marr75

+3

Wow, cieszę się, że znalazłem ten post! Działa teraz świetnie, dzięki za napiwki! –

3

Sprawdź, czy masz najnowszą gem mysql (na szynach> 2.1.2)

Zweryfikuj swój config/database.yml plik (adapter, hasła). Sprawdzić, czy jest prawidłowo ustawiony dla wszystkich środowiskach (dev, test prod)

Upewnij się, że mysql działa

+0

Sprawdziłem klejnot kilka razy, sprawdziłem wszystkie moje klejnoty w rzeczywistości. Wiem, że konfiguracja bazy danych jest poprawna, ponieważ jeśli celowo ją złamam, nie jestem już w stanie uzyskać informacji o mojej konfiguracji (nie powiodło się jedno lub więcej zapytań o informacje na serwerze). Z tego samego powodu wiem, że może on komunikować się z MySQL, i że działa mysql (jeśli dezaktywuję usługę, nie mogę już zobaczyć informacji o mojej konfiguracji ze strony powitalnej). – marr75

1

pobierz starszy MySQL client library

+0

Odpowiedź już opublikowana. Ale dziękuję. – marr75