32 votes

La version de mysql2 (0.3.2) n'est plus livrée avec l'adaptateur ActiveRecord car il fait maintenant partie de Rails 3.1.

Bonjour, j'utilise rails version 3.0.7 lorsque j'exécute rails generate model task name:string j'obtiens l'avertissement suivant

WARNING: This version of mysql2 (0.3.2) doesn't ship with the ActiveRecord adapter bundled anymore as it's now part of Rails 3.1
WARNING: Please use the 0.2.x releases if you plan on using it in Rails <= 3.0.x
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/connection_adapters/abstract/connection_specification.rb:71:in `establish_connection': Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (no such file to load -- active_record/connection_adapters/mysql2_adapter) (RuntimeError)
    from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/connection_adapters/abstract/connection_specification.rb:60:in `establish_connection'
    from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in `establish_connection'
    from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/railtie.rb:59
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:43:in `run_load_hooks'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:42:in `each'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.0.7/lib/active_support/lazy_load_hooks.rb:42:in `run_load_hooks'
    from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.7/lib/active_record/base.rb:1904
    from /home/sun/railsapp/dog/vendor/plugins/attribute_fu/init.rb:1
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/plugin.rb:81
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:25:in `instance_exec'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:25:in `run'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:50:in `run_initializers'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:49:in `each'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/initializable.rb:49:in `run_initializers'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:134:in `initialize!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:77:in `send'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:77:in `method_missing'
    from /home/sun/railsapp/dog/config/environment.rb:5
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:103:in `require'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/application.rb:103:in `require_environment!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.0.7/lib/rails/commands.rb:16
    from script/rails:6:in `require'
    from script/rails:6

lorsque j'essaie d'installer activerecord-mysql2-adapter par :gem install activerecord-mysql2-adapter ERROR : Impossible de trouver une gemme valide 'activerecord-mysql2-adapter' (>= 0) dans un dépôt quelconque.

aidez-moi, s'il vous plaît merci

90voto

eveevans Points 2137

Le problème vient du fait que vous essayez d'installer la dernière version de mysql2 qui est incompatible avec la version 3.0.x de rails

Donc, dans votre Gemfile, changez la ligne de la gemme mysql2 pour ceci :

gem 'mysql2', '< 0.3'

entonces bundle commande

et ensuite quand le nouveau fichier gem mysql2 ( je pense que c'est 0.2.7 ) vous résoudrez le problème.

2voto

jstnno Points 191

Si cela ne fonctionne toujours pas, essayez aussi ceci :

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Users/YOUR_USER_NAME/.rvm/gems/1.8/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle

1voto

rubyconvict Points 11

Gem 'mysql2', '< 0.3' est la seule solution sur Rails 3.0.7 (avant 3.1)

MISE À JOUR : désolé, ce n'était pas le cas non plus, ça n'a pas marché non plus, il y a un meilleur moyen :

vendor/bundle/ruby/1.9.1/gems/mysql2-0.3.2/lib/active_record/connection_adapters$[rails307]$ ls em_mysql2_adapter.rb mysql2_adapter.rb

prenez le fichier mysql2_adapter.rb de la gemme mysql2 version 0.2.x et copiez-le à l'emplacement ci-dessus

maintenant cela fonctionne pour moi avec juste la gemme 'mysql2' dans le Gemfile

1voto

Dean Peters Points 463

Après avoir essayé la solution proposée par @eveevans, j'avais toujours des problèmes de version. Puis, en lisant la suggestion de @rubyconvict, j'ai pensé à utiliser l'option -v pour gem plutôt que de pousser les fichiers.

Voici ce que j'ai trouvé qui a finalement résolu mon problème avec le redoutable message "version of mysql2 (0.3.2)" sur DreamHost :

# in mysql, create example_app & example_app_test ...
# ... for the purposes of this example only, production == development db
rails new example_app --database=mysql --freeze
cd example_app
vim config/database.yml
#   change settings for host, user, password ...
#   ... database for test (example_app_test) ...
#   ... & database for production & development (example_app)

vim Gemfile
#   gem 'mysql2', '< 0.3'

gem uninstall mysql2        # if installed: gem list -d mysql2
gem install mysql2 -v 0.2.7 
rake db:migrate     

À partir de là, je peux passer à d'autres activités de RdR, comme par exemple la modification de routes ( vim config/routes.rb ... mais votre kilométrage peut varier ).

0voto

thekindofme Points 2789

AVERTISSEMENT : Veuillez utiliser les versions 0.2.x si vous prévoyez de l'utiliser dans Rails <= 3.0.x

donc en bref, utilisez la dernière version de la branche 0.2.x pour la gemme mysql2.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X