Error al instalar mysql2: no se pudo construir la extensión nativa de la gema


485

Tengo algunos problemas al intentar instalar mysql2gem para Rails. Cuando intento instalarlo ejecutando bundle installo gem install mysql2me da el siguiente error:

Error al instalar mysql2: ERROR: no se pudo construir la extensión nativa de la gema.

¿Cómo puedo solucionar esto e instalar con éxito mysql2?


En mi caso, ruby ​​2.1 no se mostró ningún error, pero se congeló durante varios minutos. La respuesta de Spacemonkey lo arregló.
Lucio

Respuestas:


916

En Ubuntu / Debian y otras distribuciones usando aptitude:

sudo apt-get install libmysql-ruby libmysqlclient-dev

El paquete libmysql-rubyse ha eliminado y reemplazado por ruby-mysql. Aquí es donde encontré la solución.

Si el comando anterior no funciona porque libmysql-rubyno se puede encontrar, lo siguiente debería ser suficiente:

sudo apt-get install libmysqlclient-dev

En Red Hat / CentOS y otras distribuciones que usan yum:

sudo yum install mysql-devel

En Mac OS X con Homebrew :

brew install mysql

55
Tengo el mismo problema en Windows 7. ¿Alguna idea? el comando anterior no funcionó para mí ..
Femi

37
Hola, estoy usando Ubuntu 12.04 con Ruby 1.9.3 y Rails 3.2.8 y en mi caso, la instalación libmysqlclient-devfue suficiente.
SMMousavi

2
Si está utilizando Mac OSX: actualice a la última versión de XCode e instale las Herramientas de desarrollo. Tuve el mismo problema de instalación de mysql (incluso cuando usaba --with-mysql-config = / usr / local / mysql / bin / mysql_config)
Americo Savinon

2
No necesitaba libmysql-ruby desde que instalé Ruby a través de RVM
Michael Lang

1
Para Windows, pruebe la respuesta
marcada

60

Estoy en una Mac y uso homebrew para instalar programas de código abierto. Tuve que instalar las herramientas de Mac Dev para instalar homebrew, pero después de eso fue simple:

brew install mysql

para instalar mysql No he tenido un problema de gemas mysql desde entonces.


3
Recibo un error incluso después de hacer esto. ¿Debo pasar algunas opciones cuando hago gem i mysql2?
hnprashanth

Después de ejecutar esto, no tuve problemas para instalar mysql2 ruby ​​gem en Mac OSX Lion.
KrisG

3
Si esto no ayuda, inténtalo brew link mysql --force.
Chuck Batson el

34

Aquí hay una solución para los usuarios de Windows , ¡espero que ayude!

Usando MySQL con Rails 3 en Windows

  • Instale railsinstaller -> www.railsinstaller.org (lo instalé en c: \ Rails)

  • Instalar MySQL (utilicé MySQL 5.5) -> dev.mysql.com/downloads/installer/

--- para la instalación de mySQL ---

Si aún no tiene estos dos archivos instalados, es posible que los necesite para que su MySQL

funcione vcredist_x86.exe -> http://www.microsoft.com/download/en/details.aspx? id = 5555 dotNetFx40_Full_x86_x64.exe -> http://www.microsoft.com/download/en/details.aspx?id=17718

Utilice la máquina de desarrollador de instalación predeterminada

-MySQL Server Config-
puerto: 3306
nombre del servicio de Windows: MySQL55
mysql root pass: root (puede cambiar esto más adelante)
(nombre de usuario: root)
-MySQL Server Config-

--- para la instalación de mySQL ---


--- Instale la gema mysql2 ---

Importante: haga esto con la línea de comandos de Git Bash (esto se instaló con el instalador de rails) -> inicio /

instalación de gema Git Bash mysql2 - '--with-mysql-lib = "c: \ Archivos de programa \ MySQL \ MySQL Server 5.5 \ lib "--with-mysql-include =" c: \ Archivos de programa \ MySQL \ MySQL Server 5.5 \ include "'

Ahora la gema debería haberse instalado correctamente.

Por último, copie el archivo libmysql.dll de
C: \ Archivos de programa \ MySQL \ MySQL Server 5.5 \ lib
to
C: \ Rails \ Ruby1.9.2 \ bin

--- Instale la gema mysql2 ---


Ahora podrás usar tu aplicación Rails con MySQL, si no estás seguro de cómo crear una aplicación Rails 3 con MySQL sigue leyendo ...


--- Obtenga una aplicación Rails 3 con MySQL ---

Abra el símbolo del sistema (no Git Bash) -> inicio / cmd
Navegue a su carpeta (c: \ Sites)
Cree una nueva aplicación rails

rails new world

Elimine el archivo c: \ Sites \ world \ public \ index.html
Edite el archivo c: \ Sites \ world \ config \ routes.rb
agregue esta línea -> root: to => 'cities # index'

Abrir símbolo del sistema (generar vistas y controladores)

rails generate scaffold city ID:integer Name:string CountryCode:string District:string Population:integer



Edite el archivo c: \ Sites \ world \ app \ models \ city.rb para que se vea así

class City < ActiveRecord::Base
 set_table_name "city"
end

Edite el archivo c: \ Sites \ world \ config \ database.yml para que se vea así

development:
adapter: mysql2
encoding: utf8
database: world
pool: 5
username: root
password: root
socket: /tmp/mysql.sock

agregar a gemfile

gem 'mysql2'

Abra el símbolo del sistema de Windows cmd, no Git Bash (ejecute su aplicación!)
Navegue a la carpeta de su aplicación (c: \ Sites \ world)

rails s

Abra su navegador aquí -> http: // localhost: 3000

--- Obtenga una aplicación Rails 3 con MySQL ---


Gracias, el problema fue que usé widnows PowerShell y no el símbolo del sistema normal. ahora está funcionando :)
Danpe

el host debe ser 127.0.0.1, y si la contraseña es un número, debe ponerse entre comillas ex '123456' de lo contrario, podemos escribir normalmente ex admin123
duykhoa

3
Usando XAMPP:gem install mysql2 -- --with-mysql-dir=C:\xampp\mysql
Mifeng

Mire la ruta --with-mysql-include: gem install mysql2 - --platform = ruby ​​--with-mysql-lib = "d: \ mariadb \ lib" --with-mysql-include = "d: \ mariadb \ include \ mysql "
Ivan

@Mifeng funcionó muy bien para mí, pero estoy usando GitBash y necesitaba -- --with-mysql-dir="C:\xampp\mysql"sin las comillas mis `` fueron despojados. Gracias
Mutmatt

20

Tengo varias computadoras, procesador de 32 y 64 bits, se ejecutan en Ubuntu Linux, versión Maverick (10.10).

Tuve el mismo problema, y ​​para mí, ¡ sudo apt-get install libmysql-ruby libmysqlclient-dev hicieron el trabajo!


19

Para MacOS Mojave :

gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include


así como para MacOS Catalina
Vlad

17

Otra forma para usuarios de MacOS

Si usó "brew" para instalar mysql:

gem install mysql2 -v 'x.x.x' -- --with-mysql-config=/usr/local/Cellar/mysql/y.y.y/bin/mysql_config

xxx = versión de la gema mysql2 que desea instalar
yyy = la versión de mysql que ha instalado ls /usr/local/Cellar/mysqlpara encontrarla.


Intenté ~ 10 respuestas de todo tipo de preguntas formuladas aquí ... Lo resolvió. Gracias :)
Stan

7

¿Has intentado usar

 gem install mysql -- --with-mysql-lib=/usr/lib/mysql/lib 

para especificar la ubicación del directorio base, así como la ruta a las bibliotecas MySQL que son necesarias para completar la instalación de la gema?

Fuentes: MySQL Gem Install ERROR: Error al construir la extensión nativa de gem Foros MySQL :: Ruby :: Se necesita ayuda para instalar el enlace MySQL para Ruby


Funcionó muy bien. Tuve que usar una ruta diferente, que encontré llamando which mysqly luego buscando el libdirectorio desde allí.
Joshua Pinter el

7

Si está utilizando yum intente:

sudo yum install mysql-devel

Funcionó para mí en una Micro Instancia Amazon EC2, basada en CentOS.
Lennon

5

Esto resolvió mi problema una vez en Windows:

subst X: "C:\Program files\MySQL\MySQL Server 5.5" 
gem install mysql2 -v 0.x.x --platform=ruby -- --with-mysql-dir=X: --with-mysql-lib=X:\lib\opt 
subst X: /D

Estaba a punto de publicar la fuente, pero veo que el usuario Ritesh Kumar ya lo ha hecho. Entonces su mérito, no el mío.
Carlos Pardilla

Si su lib no tiene la carpeta opt:gem install mysql2 --platform=ruby -- --with-mysql-dir=X: --without-opt-dir
Junior Mayhé

5

Si aún tienes problemas ...

Intenta instalar

   sudo apt-get install ruby1.9.1-dev

4

Tuve este problema en Windows 7. Aparentemente, este es un problema de incompatibilidad y la solución es la siguiente:

Descargue el libmySQL.dllarchivo de un instalador anterior de InstantRails. Está disponible en el repositorio InstantRails GitHub .

Luego, copie ese archivo en su carpeta Ruby / bin.

Ahora estás listo para ir;)


1
Hrm. :( Intenté esto pero aún bundle install
aparece el

3

También recibí este error. Resuelto instalando paquetes de desarrollo. Estoy usando arch y fue:

sudo pacman -S base-devel

que instaló:

m4, autoconf, automake, bison, fakeroot, flex, libmpc, ppl, cloog-ppl, elfutils, gcc,
libtool, make, patch, pkg-config

pero creo que realmente necesitaba make y gcc. La salida de error dijo (en mi máquina, entre otras):

"Primero debe instalar las herramientas de desarrollo".

Fue una decisión obvia y ayudó.


3

Tienes que instalar algunas dependencias

sudo apt-get install libmysql-ruby libmysqlclient-dev

3

En Debian Stretch, el paquete que funcionó para mí fue default-libmysqlclient-dev

sudo apt-get update && apt-get install -y default-libmysqlclient-dev


3

En mi caso esto ayudó:

$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"

Entonces:

gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/' -- --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib

Resultado:

Building native extensions with: '--with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib'
This could take a while...
Successfully installed mysql2-0.5.2
Parsing documentation for mysql2-0.5.2
Installing ri documentation for mysql2-0.5.2
Done installing documentation for mysql2 after 0 seconds
1 gem installed

Ver esta publicación (ADVERTENCIA: idioma japonés en el interior).


3

En Ubuntu (18.04)

pude resolver este problema ejecutando lo siguiente:

sudo apt-get install build-essential libmysqlclient-dev
gem install mysql2

referencia


2

Me encontraba con este error en mi Mac y descubrí que necesitaba actualizar de mysql 32bit a mysql 64 bit para que este error desapareciera. Estaba ejecutando OSX 10.6 en un intel macbook pro con ruby ​​1.9.2 y rails3.0.0

También necesitaba instalar xcode para obtener utilidades de Unix como "make" que se requieren para compilar la gema.

Una vez hecho esto, pude ejecutar gem install mysql y gem install mysql2 sin error.


1

Para usuarios de Windows: configura la lib e incluye la ruta de su mysql, por ejemplo, si está usando xampp puede tener esto:

gem install mysql2 -- '--with-mysql-lib="C:\xampp\mysql\lib" --withmysql-include="C:\xampp\mysql\include"'

1

La solución solo funciona en Mac OS X

Si instaló MySQL con homebrew, lo que funcionó para mí fue desinstalar MySQL e instalar MySQL Community Edition a través del sitio web MySQL ( https://www.mysql.com/ ).

Después de la instalación, simplemente vuelva a ingresar el comando gem install mysql2o, si es necesario sudo gem install mysql2, si tiene problemas de permiso denegado.


0

Obtuve la gema construida en Mac OS X 10.6.6 por 1) Asegurando que el paquete de herramientas para desarrolladores esté instalado 2) Descargando el paquete MySQL actual (5.5.8 en mi caso) desde la Fuente 3) Instalando la herramienta cmake desde cmake.org 4 ) Siguiendo las instrucciones en la sección 2.11 de INSTALL-SOURCE de los archivos de distribución de mysql 5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include La gema se construyó correctamente, pero hay dos errores en la documentación de los que se quejan rdoc y ri. Pero ahora cuando trato de requerir 'mysql2' obtengo un

LoadError: no such file to load -- mysql2/mysql2

Esperaba que el error que obtendría fuera que no se pudo encontrar libmysqlclient.16.dylib porque lo descubrimos en otra publicación (busque install_name_tool).

Mi $ PATH tiene / usr / local / mysql (ahí es donde se encuentran mi fuente y los archivos compilados), así que estoy un poco perplejo. Si alguien tiene alguna idea, volveré a consultar después de unas horas de sueño.



0

Después de corregir los problemas de mysql-dev, es posible que deba eliminar la instalación incorrecta de mysql2. Mire cuidadosamente los mensajes después de la instalación de $ bundle. Es posible que necesite

rm -rf vendor/cache/
rm -rf ./Zentest

Esto eliminará la mala instalación de mysql2 para que una instalación final de $ bundle pueda crear una buena.



0

Obtuve "Primero debes instalar las herramientas de desarrollo". error al intentar instalar la gema mysql2 después de actualizar a Mac OS X Mountain Lion . Aparentemente, esta actualización elimina los compiladores de línea de comandos.

Arreglar:

  • Desinstalé mi versión muy antigua de Xcode (ejecuté el script de desinstalación en / Developer / Library). Luego eliminó el directorio / Developer.
  • Fui a la AppStore y descargué Xcode.
  • Lancé Xcode y fui a Preferencias -> Descargas, e instalé las herramientas de línea de comando.

0

Tiene este problema porque no ha instalado MySql. Antes de instalar mysql2 gem. Instalar MySQL. Después de eso se instalará la gema mysql2.


0

Solo quería agregar esta respuesta específicamente para usuarios de Mac .

Mi servidor funcionaba perfectamente bien hasta que actualicé mi xcode. Mientras iniciaba mi servidor de rails, el error se mostraba así

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /Users/user/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb --with-mysql-
    checking for rb_thread_blocking_region()... /Users/user/.rvm/rubies/ruby-1.9.3-  
    p448/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an    
    executable file. (RuntimeError)

Y se sugirió instalar mysql2 gem al final del mensaje de error. Entonces, cuando intenté instalarlo, recibí el error mencionado anteriormente en esta pregunta. El error que obtuve es el siguiente

ERROR:  Error installing mysql2:
ERROR: Failed to build gem native extension.

Entonces, como se sugiere en esta publicación, probé 'brew install mysql' y dejé de decir que la versión de mysql ya estaba instalada. Pero hubo una advertencia antes de que dijera

Warning: You have not agreed to the Xcode license.
Builds will fail! Agree to the license by opening Xcode.app or running:
xcodebuild -license

Luego probé esto sudo xcodebuild -licensey escribí 'estar de acuerdo' al final. Debes ser root para aceptar la licencia.

Después de esto, nuevamente intenté la instalación del paquete y luego todo funciona bien como de costumbre. [Incluso debido a esta actualización de xcode, tuve problemas con mi torre también.]


0

libmysql-ruby ha sido eliminado y reemplazado. Nuevo comando:

 sudo apt-get install ruby-mysql libmysqlclient-dev
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.