2009-07-17 17 views
8

Kiedy próbuję połączyć się z MySQL z Sequel. Dostaję te błędy:Nie można podłączyć mysql z klejnotu Sequel

require 'rubygems' 
     require 'sequel' 
     DB = Sequel.connect(:adapter => 'mysql', :user => 'root', :host => 'localhost', :database => 'scanty',:password=>'xx') 
     DB.tables 
    Sequel::DatabaseConnectionError: NameError uninitialized constant Mysql::CLIENT_MULTI_RESULTS 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/adapters/mysql.rb:98:in `connect' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/database.rb:92:in `initialize' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:166:in `call' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:166:in `make_new' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:153:in `available' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:144:in `acquire' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:143:in `synchronize' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:143:in `acquire' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/connection_pool.rb:105:in `hold' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/database.rb:471:in `synchronize' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/adapters/mysql.rb:128:in `execute' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/dataset.rb:314:in `execute' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/adapters/mysql.rb:342:in `execute' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/adapters/mysql.rb:298:in `fetch_rows' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/dataset.rb:185:in `each' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/dataset/convenience.rb:156:in `map' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/dataset/convenience.rb:156:in `map' 
     from /opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/adapters/shared/mysql.rb:60:in `tables' 
     from (irb):6irb(main):007:0> Sequel::DatabaseConnectionError: NameErro 
+0

Wygląda na to, że Twój błąd został obcięty? Ponadto, gdzie jest host w twojej funkcji? –

+0

Dodałem hosta, ale nadal rzuca się ten sam błąd –

Odpowiedz

14

Musisz zainstalować macierzysty sterownik MySQL, czysty ruby ​​nie jest kompatybilny z Sequel.

W zależności od instalacji Ruby, wystarczy wykonanie gem install mysql. Jeśli jednak czysty plik Ruby mysql.rb znajduje się już na ścieżce ładowania Ruby, musisz go usunąć ze ścieżki ładowania lub użyć gem('mysql') przed wywołaniem Sequel.connect.

1

Ty brakuje :host=>'localhost' lub cokolwiek gospodarz jest.

Ponadto ze względu na wydajność należy spróbować włączyć :compress. Może zaoszczędzić TON przepustowości.

http://sequel.rubyforge.org/rdoc/files/doc/opening_databases_rdoc.html

Edit: OK, jeśli to nie jest gospodarzem, może to jest konflikt? Zobacz http://groups.google.com/group/sequel-talk/browse_thread/thread/ee39640a92351f1?pli=1. Również http://www.mail-archive.com/[email protected]/msg02275.html

+0

dzięki, Mam dwie wersje klejnot mysql zainstalowane na komputerze. –

+0

Czy udało Ci się wtedy naprawić problem? –

Powiązane problemy