48 votes

ERREUR: Echec de la création de l'extension native gem (mysql2 sur rails 3.2.3)

Je suis en train d'installer le mysql2 gem avec des Rails 3.2.3 et il ne fonctionne pas:

★  bundle install
Fetching gem metadata from https://rubygems.org/.........
Using rake (0.9.2.2) 
Using i18n (0.6.0) 
Using multi_json (1.2.0) 
Using activesupport (3.2.3) 
Using builder (3.0.0) 
Using activemodel (3.2.3) 
Using erubis (2.7.0) 
Using journey (1.0.3) 
Using rack (1.4.1) 
Using rack-cache (1.2) 
Using rack-test (0.6.1) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.1.2) 
Using actionpack (3.2.3) 
Using mime-types (1.18) 
Using polyglot (0.3.3) 
Using treetop (1.4.10) 
Using mail (2.4.4) 
Using actionmailer (3.2.3) 
Using arel (3.0.2) 
Using tzinfo (0.3.32) 
Using activerecord (3.2.3) 
Using activeresource (3.2.3) 
Using bundler (1.1.3) 
Using coffee-script-source (1.2.0) 
Using execjs (1.3.0) 
Using coffee-script (2.2.0) 
Using rack-ssl (1.3.2) 
Using json (1.6.6) 
Using rdoc (3.12) 
Using thor (0.14.6) 
Using railties (3.2.3) 
Using coffee-rails (3.2.2) 
Using jquery-rails (2.0.2) 
Installing mysql2 (0.3.11) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/rarneson/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb 
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/rarneson/.rvm/rubies/ruby-1.9.3-p125/bin/ruby
    --with-mysql-config
    --without-mysql-config
    --with-mysql-dir
    --without-mysql-dir
    --with-mysql-include
    --without-mysql-include=${mysql-dir}/include
    --with-mysql-lib
    --without-mysql-lib=${mysql-dir}/lib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mlib
    --without-mlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-zlib
    --without-zlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-socketlib
    --without-socketlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-nsllib
    --without-nsllib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mygcclib
    --without-mygcclib
    --with-mysqlclientlib
    --without-mysqlclientlib


Gem files will remain installed in /Users/rarneson/.rvm/gems/ruby-1.9.3-p125/gems/mysql2-0.3.11 for inspection.
Results logged to /Users/rarneson/.rvm/gems/ruby-1.9.3-p125/gems/mysql2-0.3.11/ext/mysql2/gem_make.out
An error occured while installing mysql2 (0.3.11), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.11'` succeeds before bundling.

Je suis bundle install et c'est à mon Gemfile:

gem 'mysql2', '~> 0.3.11' 

Je suis actuellement a obtenu MySQL exécute par le biais de MAMP. Je ne suis pas sûr si c'est une mauvaise idée et je devrais courir à la vanille, MySQl, mais il semble que mon problème actuel est juste en train de le gem installé. J'ai vu pas mal de ces problèmes ici sur stackoverflow mais tous semblent un peu différents ou ont vraiment compliqué de trouver des solutions. Est-il quelque chose que je suis absent? Quelque chose de simple? Quelque chose de stupide? Je peux vous fournir des informations supplémentaires à partir du fichier si nécessaire. J'ai lu que certaines personnes l'utilisation de SQLite pour les dev et test MySQL en prod, mais qui sonne comme une jolie idée horrible.

127voto

juanpastas Points 7530

De https://github.com/brianmario/mysql2/issues/8

vient de copier ceci dans la console

 sudo apt-get install mysql-client libmysqlclient-dev
 

et a travaillé !!

40voto

Jarrett Coggin Points 670

J'ai utilisé Homebrew pour Mac pour installer mysql:

 brew install mysql
 

Ensuite, j'ai utilisé une commande gem pour installer le gem mysql2:

 sudo gem install mysql2
 

17voto

sameera207 Points 7885

Ceci est principalement dû au manque d’en-têtes mysql. Essayez d’installer les packages pour les développeurs mysql (mysql-devel).

Normalement, cette erreur survient lorsque le paquet 'libmysqlclient-dev' est manquant.

1voto

Ryan Arneson Points 518

J'ai fini par installer une nouvelle copie de MySQL et de ne pas utiliser MAMP, ce qui a fait l'affaire. Il fallait également veiller à installer la version 64 bits et non 32 bits.

0voto

maniempire Points 111

Vous pouvez suivre ce fil Erreurs. Installation de mysql2 gem via le Bundler qui explique la solution pour Centos et ce problème sera corrigé si vous ajustez les commandes de votre système d’exploitation et vous pourrez installer la gem mysql2 avec succès.

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