2009-07-17 23 views
8

Quando provo a connettermi a MySQL da Sequel. Sto ottenendo questi errori:Impossibile connettersi a mysql da Sequel gem

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

Sembra che il tuo errore sia troncato? Inoltre, dov'è l'host nella tua chiamata di funzione? –

+0

ho aggiunto l'host ma continua a generare lo stesso errore –

risposta

14

È necessario installare il driver nativo MySQL, quello puro rubino non è compatibile con Sequel.

A seconda dell'installazione di Ruby, basta fare gem install mysql. Tuttavia, se il file puro di Ruby mysql.rb si trova già nel percorso di caricamento Ruby, è necessario rimuoverlo dal percorso di caricamento o utilizzare gem('mysql') prima di chiamare Sequel.connect.

1

Ti manca il :host=>'localhost' o qualunque sia il vostro ospite è.

Inoltre, e questo è solo per ragioni di prestazioni, si dovrebbe provare a abilitare :compress. Può salvare un tonnellata di larghezza di banda.

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

Edit: OK, se non è il padrone di casa, forse si tratta di un conflitto? Vedi http://groups.google.com/group/sequel-talk/browse_thread/thread/ee39640a92351f1?pli=1. Anche http://www.mail-archive.com/[email protected]/msg02275.html

+0

grazie, Ho due versioni di mysql gem installate sulla macchina. –

+0

Hai risolto il problema allora? –

Problemi correlati