2009-07-17 11 views
8

Lorsque j'essaie de me connecter à MySQL à partir de Sequel. Je reçois ces erreurs:Impossible de se connecter à mysql depuis 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

Vous semblez que votre erreur est tronquée? En outre, où est l'hôte dans votre appel de fonction? –

+0

J'ai ajouté l'hôte mais il lance toujours la même erreur –

Répondre

14

Vous devez installer le pilote MySQL natif, le rubis pur n'est pas compatible avec Sequel. En fonction de votre installation Ruby, il suffit de gem install mysql. Toutefois, si le fichier mysql.rb Ruby est déjà dans votre chemin de chargement Ruby, vous devez soit le retirer du chemin de chargement, soit utiliser gem('mysql') avant d'appeler le Sequel.connect.

1

Il vous manque le :host=>'localhost' ou quel que soit votre hôte est.

En outre, et ceci uniquement pour des raisons de performances, vous devez essayer d'activer :compress. Il peut enregistrer une tonne de bande passante.

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

Modifier: OK, si ce n'est pas l'hôte, peut-être que c'est un conflit? Voir http://groups.google.com/group/sequel-talk/browse_thread/thread/ee39640a92351f1?pli=1. Aussi http://www.mail-archive.com/[email protected]/msg02275.html

+0

merci, J'ai deux versions de mysql gem installé sur la machine. –

+0

Avez-vous réussi à résoudre le problème alors? –

Questions connexes