2009-06-20 6 views
0

J'essaie d'utiliser Rails 2.3.2 avec MySQL 5.0 sur Windows XP sans aucune chance.
J'ai installé MySQL et je suis capable de l'exécuter, ajouter des tables etc.
En ruby, la require 'mysql passe, mais il a atteint la onde première action alors je reçoisMySQL/Ruby sur Windows

> C:/Development/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/mysql_adapter.rb:7:in `define_all_hashes_method!': Mysql not loaded (RuntimeError) 
     from C:/Development/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/mysql_adapter.rb:71:in `mysql_connection' 
     from C:/Development/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:223:in `send' 
     from C:/Development/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:223:in `new_connection' 
     from C:/Development/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:245:in `checkout_new_connection' 
     from C:/Development/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:188:in `checkout' 

Toute idée de ce que Je fais mal?

require 'rubygems' 
require 'activerecord' 
require 'mysql' 

ActiveRecord::Base.establish_connection(
    :adapter => "mysql", 
    :host => "127.0.0.1", 
    :database => "ruby" 
) 


class Student < ActiveRecord::Base 
end 
Student.find(:all) 
+0

A quoi ressemblent vos chemins? Pouvez-vous invoquer irb à partir de la ligne de commande? –

+0

Oui, j'ai à la fois ruby ​​/ bin et mysql/bin dans mon chemin –

+0

Rails 3.2.3 n'est pas encore sorti. Peut-être que vous parlez de Rails 2.3.2 ...;) –

Répondre

0

Ne recevez-vous pas d'autres erreurs, comme des fichiers dll manquants, etc.? Habituellement, avec les connecteurs de base de données, vous devez ajouter les fichiers dll appripriate (comme mysql.dll) dans le PATH (ou dans le répertoire "bin" de rubys), donc ruby ​​peut les trouver.

+0

J'ai lu plusieurs endroits à propos de placer le mysql.dll dans ruby ​​/ bin mais cela n'a pas fait de différence. –

+0

Vous devez avoir la (presque) même version de mysql que la gem mysql a été compilée, ou recompiler la gemme vous-même. (Aucun n'est facile). Ou vous pouvez passer à SQLite ou Postgres, ils ont généralement moins de problèmes sur Windows. – SztupY

0

Si vous ne déployez pas sur Windows et que vos données de développement sont raisonnables (< 10k lignes/table), je passerais à SQLite. C'est assez générique que vous devriez pouvoir déployer sans problème sur MySQL. SQLite installation on Windows is pretty easy - il vous suffit d'utiliser une version plus ancienne de la gemme que le plus récent est brisé.

Postgres est une autre histoire. Je ne l'utiliserais pas si SQLite fonctionnera. Il effectue des recherches sensibles à la casse par défaut lors de l'utilisation de LIKE, contrairement à SQLite ou MySQL. Si vous l'utilisez, vérifiez vos plugins pour les requêtes LIKE.

+0

Le déploiement est sur Linux. DB contiendra au moins une table avec 10-15K enregistrements. S'il n'y a pas de différence en ce qui concerne SQL, faire le développement sur SQLite serait la meilleure solution. –