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.