web-dev-qa-db-fra.com

Veuillez installer l'adaptateur mysql 'gem install activerecord-mysql-adapter'

J'ai du mal à trouver une solution à ce problème. Je reçois l'erreur:

Please install the mysql adapter: 'gem install activerecord-mysql-adapter'

 /Users/ Andy/.rvm/gems/Ruby-1.9.2-p290@global/gems/bundler-1.0.21/lib/bundler/rubygems_integration.rb:143:in `block in replace_gem': Please install the mysql adapter: `gem install activerecord-mysql-adapter` (mysql is not part of the bundle. Add it to Gemfile.) (LoadError)
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/mysql_adapter.rb:5:in `<top (required)>'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `require'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `block in require'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `require'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:48:in `resolve_hash_connection'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:39:in `resolve_string_connection'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:23:in `spec'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:127:in `establish_connection'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/railtie.rb:76:in `block (2 levels) in <class:Railtie>'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/lazy_load_hooks.rb:26:in `on_load'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/railtie.rb:74:in `block in <class:Railtie>'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/railties-3.2.1/lib/Rails/initializable.rb:30:in `instance_exec'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/railties-3.2.1/lib/Rails/initializable.rb:30:in `run'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/railties-3.2.1/lib/Rails/initializable.rb:55:in `block in run_initializers'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/railties-3.2.1/lib/Rails/initializable.rb:54:in `each'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/railties-3.2.1/lib/Rails/initializable.rb:54:in `run_initializers'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/railties-3.2.1/lib/Rails/application.rb:136:in `initialize!'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/railties-3.2.1/lib/Rails/railtie/configurable.rb:30:in `method_missing'
    from /Users/ Andy /config/environment.rb:5:in `<top (required)>'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `require'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `block in require'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in `require'
    from /Users/ Andy /config.ru:4:in `block in <main>'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
    from /Users/ Andy /config.ru:1:in `new'
    from /Users/ Andy /config.ru:1:in `<main>'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:40:in `eval'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:40:in `parse_file'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:200:in `app'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/railties-3.2.1/lib/Rails/commands/server.rb:46:in `app'
    from /Users/ Andy/mysql2/Ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:301:in `wrapped_app'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:252:in `start'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/railties-3.2.1/lib/Rails/commands/server.rb:70:in `start'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/railties-3.2.1/lib/Rails/commands.rb:55:in `block in <top (required)>'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/railties-3.2.1/lib/Rails/commands.rb:50:in `tap'
    from /Users/ Andy /mysql2/Ruby/1.9.1/gems/railties-3.2.1/lib/Rails/commands.rb:50:in `<top (required)>'
    from script/Rails:6:in `require'
    from script/Rails:6:in `<main>' ```

Voici la sortie gem env.

  RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.15
  - Ruby VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.2.0]
  - INSTALLATION DIRECTORY: /Users/ Andy/.rvm/gems/Ruby-1.9.2-p290
  - Ruby EXECUTABLE: /Users/ Andy/.rvm/rubies/Ruby-1.9.2-p290/bin/Ruby
  - EXECUTABLE DIRECTORY: /Users/ Andy/.rvm/gems/Ruby-1.9.2-p290/bin
  - RUBYGEMS PLATFORMS:
    - Ruby
    - x86_64-darwin-11
  - GEM PATHS:
     - /Users/ Andy/.rvm/gems/Ruby-1.9.2-p290
     - /Users/ Andy/.rvm/gems/Ruby-1.9.2-p290@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

Si je peux fournir plus d'informations s'il vous plaît faites le moi savoir.

Merci, - Andy


P.s - Mon database.yaml a déjà mysql2.

40
Andy

Le problème concerne votre fichier config/database.yml

Vous devriez avoir une ligne qui spécifie que l'adaptateur est mysql2 (et non mysql)

adapter: mysql2

Au lieu de

adapter: mysql
110
rorra

Ce qui m'a aidé a été de spécifier l'adaptateur mysql2 au lieu de mysql (notez le chiffre!) Dans config/database.yml.

17
rpuch

Je ne l'aurais jamais cru, mais supprimer mon fichier database.yml et le recréer a résolu le problème pour moi aussi. Merci Tyler. J'ai passé des heures à installer et désinstaller différentes versions des gems mysql, mysql2, activerecord-mysql-adapter, etc ... Au final, mon gemfile a

gem 'mysql2', "~>0.3.11"

et mon fichier database.yml a

adapter: mysql2

Je suis sur OSX 10.8, Rails 3.2.8 et Ruby 1.9.3.

En passant, j’ai rencontré les mêmes problèmes avec l’adaptateur mysql2 sur ma machine Windows 7. Désinstaller et même supprimer le répertoire de la gem activerecord-mysql-adapter semblait également essentiel.

9
Aaron Henderson

1) Vous devez mettre à jour votre fichier config/database.yml et modifier:

adapter: mysql

dans

adapter: mysql2

2) Vous devez mettre à jour votre Gemfile et y ajouter explicitement la dépendance activerecord-mysql2-adapter:

gem 'mysql2'
gem 'activerecord-mysql2-adapter'
8
Paweł Gościcki

Vous voulez installer le mysql2 gem .

Vraiment, vous devriez probablement l'ajouter à votre Gemfile:

gem "mysql2"

Et installez ensuite vos gemmes avec bundler:

bundle install
6
bhamby

C’est peut-être tard, mais l’installation en bundle était en train d’installer 0.4.0 Alors j’ai essayé de modifier le fichier gem et je remplace mysql2 par 

gem 'mysql2', "~>0.3.11"

et alors 

bundle install 

dans le terminal (Cela installera mysql2 0.3.11 et pas la dernière version). Je pense qu’un enregistrement actif a des problèmes pour travailler avec la dernière version. Eh bien j'espère que ça aide

5
user2822413

Étape 1. gem 'mysql2', "~>0.3.11" au lieu de gem 'mysql2' dans Gemfile 

Étape 2. putting mysqllib.dll (disponible sur l'installation mysql C:\wamp\bin\mysql\mysql5.5.24\lib) dans le dossier C:\Ruby2.0.0\bin a résolu le problème de rake db:migrate et a correctement connecté mes Rails avec mysql (database.yml contient mysql2)

Je suis sous Windows 7, 64bit, MySQL 64bit, Ruby 2.0.0 [x64-mingw32]

Merci à tous pour vos contributions. 

4
parag

Si rien ne vous aide (vous avez l'adaptateur mysql2 dans votre database.yml) et vous utilisezRVMpour gérer vos versions de Ruby, voici la solution la plus simple:

Essayez de supprimer tous vos anciens gemsets (y compris global), installez une nouvelle version de Ruby et regroupez-la à nouveau. Je pourrais résoudre le problème de cette façon.

3
ijon

J'ai eu le même problème que OP sur OSX Lion après la mise à niveau vers Rails 3.2. La suppression de toutes les gemmes, l’installation en bundle, etc. ne fonctionnaient pas. Gemfile et database.yml spécifaient correctement mysql2.

En fin de compte, j'ai supprimé et recréé mon database.yml et tout fonctionne à nouveau. C'était probablement une faute de frappe ou un caractère caché dans le fichier.

3
Tyler Broadbent

Il est possible que vous ayez changé d'adaptateur en mysql2 pour un environnement donné mais que l'environnement ne soit pas transmis à la commande rake.

Par exemple. J'ai seulement changé mysql en mysql2 dans l'environnement de production mais je courais

rake generate_secret_token

quand je l'ai changé au suivant cela a fonctionné:

rake generate_secret_token Rails_ENV=production
2
Medhat Gayed

vous avez mentionné que votre fichier database.yaml a déjà mysql2.

Cela vaut la peine de vérifier si vous avez installé activerecord-mysql2-adapter . (Remarque -mysql2-)

2
dotnetcoder

Je dirais que changer les informations commentées en haut dans database.yml à 

# 
# Install the MYSQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing:
#   http://dev.mysql.com/doc/refman/5.0/en/old-client.html

deuxième: ajoutez "gem 'mysql2'" (quel que soit l'intérieur des guillemets) au fichier gem 

tout enregistrer, installer en bundle. J'espère que cela pourra aider.

ou cela pourrait simplement être une faute de frappe. 

1
Aman Khatri

Je suis confronté au même problème et la même erreur se produit lors de l'exécution de la commande 

gem install activerecord-mysql2-adapter

vous devez installer libmysqlclient-dev

Sudo apt-get install libmysqlclient-dev

Ça marche pour moi 

1
Haris Khalique

Dans mon cas, quand j'ai aussi eu cette erreur: 

rateau avorté! Installez l’adaptateur mysql: gem install activerecord-mysql-adapter (mysql ne fait pas partie du paquet. Ajoutez-le à Gemfile.)

Après avoir cherché sur Google et essayé de nombreuses manières, cela n'a pas fonctionné. Enfin, la réponse est 

  • Accédez à la racine de votre application, exécutez open gemfile.
  • Ajoutez la ligne gem 'mysql2', '< 0.3.7' directement sous la ligne gem pour Rails.
0
biolinh

Pour une ancienne application Rails 2.3.18 Ruby 1.8.7 que j'ai "migrée" vers un nouveau MacBook (High Sierra - 10.13.6), afin de pouvoir exécuter l'application (à l'aide de POW) et d'utiliser le script/la Il fallait désactiver SIP et créer un lien vers un fichier dans le répertoire/urs/lib /. L'Assistant de migration n'a pas pu créer le lien en raison de SIP.

Pour désactiver SIP - Protection de l'intégrité du système

  1. Démarrez en mode de récupération Mac OS comme d'habitude en maintenant les touches Commande et R enfoncées pendant le démarrage du système.

  2. Choisissez la langue comme d'habitude (si applicable)

  3. Dans l’écran «MacOS Utilities», déroulez le menu «Utilities» en haut de l’écran.

  4. Dans le terminal, tapez la commande: csrutil disable

  5. Redémarrez votre ordinateur

Enfin, après le redémarrage, dans Terminal, entrez cette commande:

Sudo ln /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

0
GeezerGeek