node - ruby on rails mysql configuration
ERROR: no se pudo construir la extensión nativa de gema(mysql2 en rieles 3.2.3) (8)
Cuando recibí este error, pude solucionarlo ejecutando:
gem install devtools
Estoy tratando de instalar la gema mysql2 con Rails 3.2.3 y está fallando:
★ 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.
Estoy ejecutando bundle install y esto está en mi Gemfile:
gem ''mysql2'', ''~> 0.3.11''
Actualmente tengo MySQL corriendo a través de MAMP. No estoy seguro de si esto es una mala idea y debería ejecutar un MySQL de vanilla, pero parece que mi problema actual es simplemente instalar la gema. He visto bastantes de estos problemas aquí en stackoverflow, pero todos parecen un poco diferentes o tienen soluciones realmente complicadas. ¿Se me escapa algo? Algo simple? ¿Algo estúpido? Puedo proporcionar información adicional del archivo si es necesario. He leído que algunas personas usan SQLite para desarrollo y prueba luego MySQL en prod, pero eso suena como una idea bastante horrible.
Desde https://github.com/brianmario/mysql2/issues/8
acabo de copiar esto en la consola
sudo apt-get install mysql-client libmysqlclient-dev
y funcionó !!
Esto se debe principalmente a la falta de encabezados mysql. Intenta instalar paquetes mysql developer (mysql-devel)
Normalmente, este error aparece cuando falta el paquete ''libmysqlclient-dev''
- si estás en linux, prueba este enlace
- si está en Windows, esta https://github.com/brianmario/mysql2/issues/8
Me encontré con el mismo problema, con OS X Sierra y MAMP y Rails 5. Instalé con éxito la gema a través de
gem install mysql2 -- --with-mysql-config=/Applications/MAMP/Library/bin/mysql_config
Después de eso, la instalación del paquete funcionó bien.
Puede seguir este hilo Errores al instalar mysql2 gem a través del Bundler que explica la solución para Centos y este problema se solucionará, si modifica los comandos de su sistema operativo y puede instalar con éxito la gema mysql2.
Simplemente agregue MAMP mysql a PATH, luego puede ejecutar la instalación de paquetes como de costumbre.
$ / Aplicaciones / MAMP / Library / bin / mysql --host = localhost -uroot -proot
fuente: http://blog-en.mamp.info/2009/08/using-mysql-command-line-with-mamp.html
Terminé simplemente instalando una copia nueva de MySQL y no usando MAMP y eso fue lo que hizo. También tenía que asegurarse de instalar la versión de 64 bits, no de 32 bits.
Usé Homebrew para Mac para instalar mysql:
brew install mysql
Luego usé un comando gem para instalar la gema mysql2:
sudo gem install mysql2