Errore durante l'installazione di mysql2: impossibile creare l'estensione nativa gem


485

Sto riscontrando alcuni problemi quando provo ad installare mysql2gem for Rails. Quando provo a installarlo eseguendo bundle installo gem install mysql2mi dà il seguente errore:

Errore durante l'installazione di mysql2: ERRORE: impossibile creare l'estensione nativa gem.

Come posso risolvere questo problema e installarlo correttamente mysql2?


Nel mio caso ruby ​​2.1 non è stato mostrato alcun errore ma si è bloccato per diversi minuti. La risposta di Spacemonkey l'ha risolto.
Lucio,

Risposte:


916

Su Ubuntu / Debian e altre distribuzioni usando aptitude:

sudo apt-get install libmysql-ruby libmysqlclient-dev

Il pacchetto libmysql-rubyè stato gradualmente eliminato e sostituito da ruby-mysql. Qui è dove ho trovato la soluzione.

Se il comando sopra non funziona perché libmysql-rubynon è possibile trovare, dovrebbe essere sufficiente quanto segue:

sudo apt-get install libmysqlclient-dev

Su Red Hat / CentOS e altre distribuzioni usando yum:

sudo yum install mysql-devel

Su Mac OS X con Homebrew :

brew install mysql

5
ho lo stesso problema su Windows 7 .. Qualche idea? il comando sopra non ha funzionato per me ..
femi

37
Ciao, sto usando Ubuntu 12.04 con Ruby 1.9.3 e Rails 3.2.8 e nel mio caso l'installazione è libmysqlclient-devstata sufficiente.
SMMousavi,

2
Se stai utilizzando Mac OSX: aggiorna all'ultima versione di XCode e installa gli Strumenti di sviluppo. Ho avuto lo stesso problema di installazione di mysql (anche quando ho usato --with-mysql-config = / usr / local / mysql / bin / mysql_config)
Americo Savinon

2
Non avevo bisogno di libmysql-ruby da quando avevo installato Ruby tramite RVM
Michael Lang,

1
Per le finestre provare la risposta Ticked da stackoverflow.com/questions/19014117/...
nitigyan

60

Sono su un Mac e uso homebrew per installare programmi open source. Ho dovuto installare gli strumenti mac Dev per installare homebrew, ma dopo è stato semplice:

brew install mysql

per installare mysql. Da allora non ho più avuto problemi con le gemme mysql.


3
Ricevo un errore anche dopo averlo fatto. Devo passare alcune opzioni quando faccio gem i mysql2 ??
hnprashanth,

Dopo aver eseguito questo, non ho avuto problemi con l'installazione della gemma rubino mysql2 su Mac OSX Lion.
KrisG,

3
Se questo non aiuta, prova brew link mysql --force.
Chuck Batson,

34

ecco una soluzione per gli utenti di Windows , spero che sia di aiuto!

Utilizzo di MySQL con Rails 3 su Windows

  • Installa railsinstaller -> www.railsinstaller.org (l'ho installato su c: \ Rails)

  • Installa MySQL (ho usato MySQL 5.5) -> dev.mysql.com/downloads/installer/

--- per l'installazione di mySQL ---

Se non hai già installato questi due file potresti averne bisogno per far funzionare MySQL

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

Usa installazione predefinita Macchina sviluppatore

-MySQL Server Config-
port: 3306
nome servizio windows: MySQL55
mysql root pass: root (puoi cambiarlo in seguito)
(nome utente: root)
-MySQL Server Config-

--- per installazione mySQL ---


--- Installa la gemma mysql2 ---

Importante: fallo con la riga di comando di Git Bash (installata con railsinstaller) -> start / Git Bash

gem installa mysql2 - '--with-mysql-lib = "c: \ Programmi \ MySQL \ MySQL Server 5.5 \ lib "--with-mysql-include =" c: \ Programmi \ MySQL \ MySQL Server 5.5 \ include "'

Ora la gemma dovrebbe essere installata correttamente

Infine copia il file libmysql.dll da
C: \ Programmi \ MySQL \ MySQL Server 5.5 \ lib
to
C: \ Rails \ Ruby1.9.2 \ bin

--- Installa la gemma mysql2 ---


Ora sarai in grado di utilizzare la tua app Rails con MySQL, se non sei sicuro di come creare un'app Rails 3 con MySQL leggi ...


--- Ottieni un'app Rails 3 con MySQL ---

Apri il prompt dei comandi (non Git Bash) -> start / cmd
Naviga nella tua cartella (c: \ Sites)
Crea una nuova app rails

rails new world

Elimina il file c: \ Sites \ world \ public \ index.html
Modifica il file c: \ Sites \ world \ config \ route.rb
aggiungi questa riga -> root: to => 'cities # index'

Apri prompt dei comandi (genera viste e controller)

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



Modifica il file c: \ Sites \ world \ app \ models \ city.rb in questo modo

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

Modifica il file c: \ Sites \ world \ config \ database.yml in questo modo

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

aggiungi al gemfile

gem 'mysql2'

Apri il prompt dei comandi di Windows cmd, non di Git Bash (esegui la tua app!)
Vai alla cartella della tua app (c: \ Sites \ world)

rails s

Apri qui il tuo browser -> http: // localhost: 3000

--- Ottieni un'app Rails 3 compatibile con MySQL ---


Grazie, il problema era che ho usato widescreen PowerShell e non un normale prompt dei comandi. ora funziona :)
Danpe,

l'host deve essere 127.0.0.1 e, se la password è un numero, deve essere inserita tra virgolette "123456", altrimenti possiamo digitare normalmente ex admin123
duykhoa,

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

Guarda il percorso --with-mysql-include: gem install mysql2 - --platform = ruby ​​--with-mysql-lib = "d: \ mariadb \ lib" --with-mysql-include = "d: \ mariadb \ include \ mysql "
Ivan,

@Mifeng ha funzionato benissimo per me, ma sto usando GitBash e avevo bisogno di -- --with-mysql-dir="C:\xampp\mysql"virgolette senza le virgolette. Grazie
Mutmatt il

20

Ho diversi computer, processore a 32 e 64 bit, funzionano su Ubuntu Linux, versione Maverick (10.10).

Ho avuto lo stesso problema e per me ha sudo apt-get install libmysql-ruby libmysqlclient-dev fatto il lavoro !!!


19

Per 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


così come per MacOS Catalina
Vlad,

17

Un altro modo per gli utenti MacOS

Se hai usato "brew" per installare mysql:

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

xxx = versione della gemma mysql2 che vuoi installare
yyy = la versione di mysql che hai installato ls /usr/local/Cellar/mysqlper trovarla.


Ho provato ~ 10 risposte da tutti i tipi di domande poste qui ... L'hai risolto. Grazie :)
Stan,

7

Hai provato a usare

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

specificare la posizione della directory thebase e il percorso delle librerie MySQL necessarie per completare l'installazione gem?

Fonti: MySQL Gem Install ERROR: impossibile creare l'estensione nativa gem Forum MySQL :: Ruby :: Guida necessaria con l'installazione di MySQL binding per Ruby


Ha funzionato alla grande. Ho dovuto usare un percorso diverso, che ho trovato chiamando which mysqle trovando la libdirectory da lì.
Joshua Pinter,

7

Se stai usando yum prova:

sudo yum install mysql-devel

Ha funzionato per me in una microistanza Amazon EC2, basata su CentOS.
Lennon,

5

Ciò ha risolto il mio problema una volta in 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

Stavo per pubblicare la fonte ma vedo che l'utente Ritesh Kumar l'ha già fatto. Quindi il suo merito, non il mio.
Carlos Pardilla,

Se la tua libreria non ha una cartella opt:gem install mysql2 --platform=ruby -- --with-mysql-dir=X: --without-opt-dir
Junior Mayhé

5

Se hai ancora problemi ...

Prova a installare

   sudo apt-get install ruby1.9.1-dev

4

Ho avuto questo problema su Windows 7. Questo è apparentemente un problema di incompatibilità e la soluzione è la seguente:

Scarica il libmySQL.dllfile da un vecchio programma di installazione di InstantRails. È disponibile dal repository GitHub di InstantRails .

Quindi, copia quel file nella tua cartella Ruby / bin.

Ora sei a posto;)


1
Hrm. :( Ho provato questo, ma ci sono ancora errori quando si tenta di eseguire bundle install.
aakoch

3

Ho anche questo errore. Risolto installando pacchetti di sviluppo. Sto usando arch ed era:

sudo pacman -S base-devel

quale installato:

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

ma penso che in realtà avesse bisogno di make e gcc. Output dell'errore detto (sulla mia macchina, tra l'altro):

"Devi prima installare gli strumenti di sviluppo."

Quindi è stata una decisione ovvia e ha aiutato.


3

Devi installare alcune dipendenze

sudo apt-get install libmysql-ruby libmysqlclient-dev

3

Su Debian Stretch il pacchetto che funzionava per me era default-libmysqlclient-dev

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


3

Nel mio caso questo ha aiutato:

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

Poi:

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

Risultato:

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

Vedi questo post (ATTENZIONE: lingua giapponese all'interno).


3

Su Ubuntu (18.04)

sono stato in grado di risolvere questo problema eseguendo quanto segue:

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

riferimento


2

Stavo riscontrando questo errore sul mio mac e ho scoperto che avevo bisogno di aggiornare da mysql 32 bit a mysql 64 bit per far scomparire questo errore. Stavo eseguendo OSX 10.6 su un MacBook Pro Intel con ruby ​​1.9.2 e rails3.0.0

Avevo anche bisogno di installare xcode per ottenere utility unix come "make" necessarie per compilare la gemma.

una volta fatto questo sono stato in grado di eseguire gem install mysql e gem install mysql2 senza errori.


1

Per l'utente windows: imposti la lib e includi il percorso del tuo mysql, per esempio, se stai usando xampp puoi avere in questo modo:

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

1

La soluzione funziona solo su Mac OS X.

Se hai installato MySQL con homebrew, ciò che ha funzionato per me è stato disinstallare MySQL e installare MySQL Community Edition tramite il sito Web MySQL ( https://www.mysql.com/ ).

Dopo l'installazione, inserisci nuovamente il comando gem install mysql2o, se necessario sudo gem install mysql2, se riscontri problemi di autorizzazione negata.


0

Ho ottenuto la gemma costruita su Mac OS X 10.6.6 di 1) Assicurando che il pacchetto degli strumenti per sviluppatori sia installato 2) Download dell'attuale pacchetto MySQL (nel mio caso 5.5.8) da Source 3) Installazione dello strumento cmake da cmake.org 4 ) Seguendo le istruzioni nella sezione 2.11 di INSTALL-SOURCE dai file di distribuzione mysql 5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include La gemma è stata costruita correttamente, ma ci sono due errori nella documentazione di cui si lamentano rdoc e ri. Ma ora quando provo a richiedere 'mysql2' ottengo un

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

Speravo che l'errore che avrei ricevuto fosse che il libmysqlclient.16.dylib non è stato trovato perché l'abbiamo capito in un altro post (cerca install_name_tool).

Il mio $ PATH contiene / usr / local / mysql (è lì che si trovano i miei file sorgente e quelli creati), quindi sono un po 'sconcertato. Se qualcuno ha qualche idea, ricontrollerò dopo alcune ore di sonno.



0

Dopo aver corretto i problemi di mysql-dev, potrebbe essere necessario rimuovere l'installazione mysql2 errata. Guarda attentamente i messaggi dopo l'installazione del pacchetto $. Potrebbe essere necessario

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

Questo eliminerà la cattiva installazione di mysql2 in modo che un'installazione $ bundle finale possa crearne una buona.



0

Ho ottenuto "Devi prima installare gli strumenti di sviluppo". errore durante il tentativo di installare la gemma mysql2 dopo l'aggiornamento a Mac OS X Mountain Lion . Apparentemente questo aggiornamento rimuove i compilatori della riga di comando.

Aggiustare:

  • Ho disinstallato la mia versione molto vecchia di Xcode (ho eseguito lo script di disinstallazione in / Developer / Library). Quindi eliminato la directory / Developer.
  • Andato su AppStore e scaricato Xcode.
  • Avviato Xcode ed è andato in Preferenze -> Download e ha installato gli strumenti da riga di comando.

0

Stai riscontrando questo problema perché non hai installato MySql. Prima di installare mysql2 gem. Installa MySQL. Dopo di che verrà installato mysql2 gem.


0

Volevo solo aggiungere questa risposta appositamente per gli utenti Mac .

Il mio server funzionava perfettamente fino a quando non ho aggiornato il mio xcode. Durante l'avvio del mio server rails l'errore è stato mostrato in questo modo

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)

E c'è stato il suggerimento di installare mysql2 gem alla fine del messaggio di errore. Quindi, quando ho provato a installarlo ho ricevuto l'errore come sopra menzionato in questa domanda. L'errore che ho ricevuto è il seguente

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

Quindi, come suggerito in questo post, ho provato 'brew install mysql' e ho smesso di dire che la versione mysql era già così installata. Ma c'era un avvertimento prima che dicesse

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

Quindi ho provato questo sudo xcodebuild -licensee ho digitato "d'accordo" alla fine. Devi essere root per accettare la licenza.

Dopo questo, ho provato di nuovo l'installazione del bundle e poi tutto funziona normalmente. [Anche a causa di questo aggiornamento di xcode, ho avuto problemi anche con la mia torre.]


0

libmysql-ruby è stato gradualmente eliminato e sostituito. Nuovo comando:

 sudo apt-get install ruby-mysql libmysqlclient-dev
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.