Erro ao instalar o mysql2: falha ao criar a extensão nativa gem

485

Estou tendo alguns problemas ao tentar instalar o mysql2gem para Rails. Quando tento instalá-lo executando bundle installou gem install mysql2ele me dá o seguinte erro:

Erro ao instalar o mysql2: ERRO: Falha ao criar a extensão nativa gem.

Como posso corrigir isso e instalar com êxito mysql2?

spacemonkey
fonte
No meu caso, ruby ​​2.1, nenhum erro foi mostrado, mas congelou por vários minutos. A resposta da tecla Spacemonkey foi corrigida.
Lucio #

Respostas:

916

No Ubuntu / Debian e outras distribuições usando o aptitude:

sudo apt-get install libmysql-ruby libmysqlclient-dev

O pacote libmysql-rubyfoi descontinuado e substituído por ruby-mysql. Foi aqui que encontrei a solução.

Se o comando acima não funcionar porque libmysql-rubynão pode ser encontrado, o seguinte deve ser suficiente:

sudo apt-get install libmysqlclient-dev

No Red Hat / CentOS e outras distribuições usando yum:

sudo yum install mysql-devel

No Mac OS X com Homebrew :

brew install mysql
spacemonkey
fonte
5
Eu tenho o mesmo problema no Windows 7 .. Quaisquer idéias? o comando acima não funcionou para mim .. #
284
37
Olá, estou usando o Ubuntu 12.04 com Ruby 1.9.3 e Rails 3.2.8 e, no meu caso, a instalação libmysqlclient-devfoi suficiente.
SMMousavi
2
Se você estiver usando o Mac OSX: atualize para a versão mais recente do XCode e instale as Ferramentas de Desenvolvimento. Eu tive o mesmo mysql instalar questão (mesmo quando usando o --with-mysql-config = / usr / local / mysql / bin / mysql_config)
Américo Saviñón
2
Não precisava libmysql-ruby desde que eu tinha instalado o Ruby via RVM
Michael Lang
1
Para Windows, tente a resposta
marcada
60

Estou em um mac e uso homebrew para instalar programas de código aberto. Eu tive que instalar as ferramentas do Mac Dev para instalar o homebrew, mas depois disso foi simples:

brew install mysql

instalar o mysql. Eu não tive um problema de gema mysql desde então.

Kelsin
fonte
3
Estou recebendo erro mesmo depois de fazer isso. Devo passar algumas opções quando eu faço gem i mysql2 ??
Hnprashanth
Depois de executar isso, não tive problemas ao instalar o gemq mysql2 ruby ​​no Mac OSX Lion.
KrisG
3
Se isso não ajudar, tente brew link mysql --force.
Chuck Batson
34

Aqui está uma solução para os usuários do Windows , espero que ajude!

Usando o MySQL com o Rails 3 no Windows

  • Instale o railsinstaller -> www.railsinstaller.org (instalei-o em c: \ Rails)

  • Instale o MySQL (usei o MySQL 5.5) -> dev.mysql.com/downloads/installer/

--- para instalação do mySQL ---

Se você ainda não possui esses dois arquivos instalados, pode ser necessário que eles

façam o MySQL funcionar em 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

Usar a máquina do desenvolvedor da instalação padrão

-MySQL Server Configuration
: 3306
nome do serviço do Windows: MySQL55
passe root do mysql: root (você pode alterar isso mais tarde)
(nome de usuário: root)
-MySQL Server Config-

--- para instalação do mySQL ---


--- Instale a gema mysql2 ---

Importante: Faça isso com a linha de comando do Git Bash (isto foi instalado com o railsinstaller) -> start / git Bash

gem install mysql2 - '--with-mysql-lib = "c: \ Arquivos de programa \ MySQL \ MySQL Server 5.5 \ lib "--with-mysql-include =" c: \ Arquivos de programas \ MySQL \ MySQL Server 5.5 \ include "'

Agora a gem deve ter sido instalada corretamente

Copie finalmente o arquivo libmysql.dll de
C: \ Arquivos de programas \ MySQL \ MySQL Server 5.5 \ lib
para
C: \ Rails \ Ruby1.9.2 \ bin

--- Instale o mysql2 Gem ---


Agora você poderá usar seu aplicativo Rails com o MySQL, se não tiver certeza de como criar um aplicativo Rails 3 com o MySQL lido em ...


--- Obtenha um aplicativo Rails 3 com MySQL ---

Abra o prompt de comando (não o Git Bash) -> start / cmd
Navegue até sua pasta (c: \ Sites)
Crie um novo aplicativo rails

rails new world

Exclua o arquivo c: \ Sites \ world \ public \ index.html
Edite o arquivo c: \ Sites \ world \ config \ routes.rb
adicione esta linha -> root: to => 'cities # index'

Prompt de comando aberto (gerar visualizações e controladores)

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



Edite o arquivo c: \ Sites \ world \ app \ models \ city.rb para ficar assim

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

Edite o arquivo c: \ Sites \ world \ config \ database.yml para ficar assim

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

adicionar ao gemfile

gem 'mysql2'

Abra o prompt de comando do Windows cmd, não o Git Bash (execute seu aplicativo!)
Navegue até a pasta do aplicativo (c: \ Sites \ world)

rails s

Abra o navegador aqui -> http: // localhost: 3000

--- Obtenha um aplicativo Rails 3 com MySQL ---

François
fonte
Obrigado, o problema foi que eu usei o PowerShell widnows e não o prompt de comando normal. agora ele está trabalhando :)
Danpe
o host deve ser 127.0.0.1 e, se a senha for um número, ela deve ser colocada entre aspas ex '123456', caso contrário, podemos digitar normalmente ex admin123
duykhoa
3
Usando XAMPP:gem install mysql2 -- --with-mysql-dir=C:\xampp\mysql
Mifeng
Veja o caminho --with-mysql-include: gem install mysql2 - --platform = ruby ​​--with-mysql-lib = "d: \ mariadb \ lib" --with-mysql-include = "d: \ mariadb \ include \ mysql "
Ivan
@Mifeng funcionou muito bem para mim, mas estou usando o GitBash e precisava -- --with-mysql-dir="C:\xampp\mysql"sem as aspas minhas `` foram removidas. Obrigado
Mutmatt
20

Eu tenho vários computadores, processadores de 32 e 64 bits, eles rodam no Ubuntu Linux, versão Maverick (10.10).

Eu tive o mesmo problema e, para mim, sudo apt-get install libmysql-ruby libmysqlclient-dev fez o trabalho !!!

OfficeYA
fonte
19

Para o 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

Allen
fonte
bem como para MacOS Catalina
Vlad
17

Outra maneira para usuários de MacOS

Se você usou "brew" para instalar o mysql:

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

xxx = versão do gem do mysql2 que você deseja instalar
yyy = a versão do mysql que você instalou ls /usr/local/Cellar/mysqlpara encontrá-lo.

aruanoc
fonte
Tentei ~ 10 respostas de todos os tipos de perguntas feitas aqui ... Você resolveu. Obrigado :)
Stan
7

Você já tentou usar

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

especificar a localização do diretório base, bem como o caminho para as bibliotecas MySQL necessárias para concluir a instalação da gem?

Fontes: MySQL Gem Install ERRO: Falha ao criar a extensão nativa gem Gem MySQL Forums :: Ruby :: Ajuda necessária na instalação da ligação do MySQL para Ruby

João Pereira
fonte
Trabalhou muito bem. Eu tive que usar um caminho diferente, que encontrei chamando which mysqle depois encontrando o libdiretório a partir daí.
Joshua Pinter
7

Se você estiver usando o yum, tente:

sudo yum install mysql-devel
Mark Locklear
fonte
Ele funcionou para mim em uma Micro Instância do Amazon EC2, baseada no CentOS.
Lennon
5

Isso resolveu meu problema uma vez no 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
Carlos Pardilla
fonte
Eu estava prestes a postar a fonte, mas vejo que o usuário Ritesh Kumar já o fez. Portanto, o mérito dele, não o meu.
Carlos Pardilla
Se sua lib não tiver a pasta opt:gem install mysql2 --platform=ruby -- --with-mysql-dir=X: --without-opt-dir
Junior Mayhé
5

Se você ainda está tendo problemas….

Tente instalar

   sudo apt-get install ruby1.9.1-dev
capu
fonte
4

Eu tive esse problema no Windows 7. Esse é aparentemente um problema de incompatibilidade e a solução é a seguinte:

Faça o download do libmySQL.dllarquivo em um instalador mais antigo do InstantRails. Está disponível no repositório InstantRails GitHub .

Em seguida, copie esse arquivo para sua pasta Ruby / bin.

Agora, você está pronto para ir;)

santo101
fonte
1
Hrm. :( Eu tentei isso, mas ainda chegar lá de erro ao tentar executar bundle install.
aakoch
3

Também recebi esse erro. Resolvido instalando pacotes de desenvolvimento. Estou usando o arch e foi:

sudo pacman -S base-devel

que instalou:

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

mas acho que realmente precisava de make e gcc. A saída de erro dizia (na minha máquina, entre outros):

"Você precisa instalar as ferramentas de desenvolvimento primeiro."

Portanto, foi uma decisão óbvia e ajudou.

arty
fonte
3

Você precisa instalar algumas dependências

sudo apt-get install libmysql-ruby libmysqlclient-dev
vipin
fonte
3

No Debian Stretch, o pacote que funcionou para mim foi default-libmysqlclient-dev

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

Ali Yazdani
fonte
3

No meu caso, isso ajudou:

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

Então:

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

Veja este post (AVISO: idioma japonês dentro).

Nobita
fonte
3

No Ubuntu (18.04)

Consegui resolver esse problema executando o seguinte:

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

referência

Paa Yaw
fonte
2

Eu estava enfrentando esse erro no meu mac e descobri que precisava atualizar o mysql 32bit para o mysql 64 bits para obter esse erro. Eu estava executando o OSX 10.6 em um intel macbook pro com ruby ​​1.9.2 e rails3.0.0

Eu também precisava instalar o xcode para obter utilitários unix como "make", necessários para compilar a gema.

Uma vez feito isso, fui capaz de executar o gem install mysql e o gem install mysql2 sem erros.

lofte
fonte
1

Para usuário do Windows: Você define a lib e inclui o caminho do seu mysql, por exemplo, se você estiver usando o xampp, poderá ter o seguinte:

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

A solução funciona apenas no Mac OS X

Se você instalou o MySQL com homebrew, o que funcionou para mim foi desinstalar o MySQL e instalar o MySQL Community Edition através do site do MySQL ( https://www.mysql.com/ ).

Após a instalação, basta digitar novamente o comando gem install mysql2ou, se necessário sudo gem install mysql2, se você estiver recebendo problemas de permissão negada.

the12
fonte
0

Eu desenvolvi o gem construído no Mac OS X 10.6.6 por 1) Garantindo a instalação do pacote de ferramentas para desenvolvedores 2) Fazendo o download do pacote atual do MySQL (5.5.8 no meu caso) da fonte 3) Instalando a ferramenta cmake em cmake.org 4 ) Seguindo as instruções na seção 2.11 de INSTALL-SOURCE dos arquivos de distribuição do mysql 5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include A gem foi criada com sucesso, mas há dois erros na documentação que os rdoc e ri se queixam. Mas agora, quando tento exigir 'mysql2', recebo uma

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

Eu esperava que o erro que recebesse fosse que o libmysqlclient.16.dylib não pudesse ser encontrado porque descobrimos isso em outra postagem (procure por install_name_tool).

Meu $ PATH tem / usr / local / mysql (é onde meus arquivos de origem e de construção estão localizados), então estou um pouco perplexo. Se alguém tiver alguma ideia, volto depois de algumas horas de sono.

tobinjim
fonte
0

Depois de corrigir os problemas do mysql-dev, talvez seja necessário remover a instalação incorreta do mysql2. Observe atentamente as mensagens após a instalação do $ bundle. Você pode precisar

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

Isto irá limpar a instalação incorreta do mysql2, para que uma instalação final do $ bundle possa criar uma boa.

mmell
fonte
0

Obteve o "Você precisa instalar as ferramentas de desenvolvimento primeiro". erro ao tentar instalar a jóia do mysql2 após a atualização para o Mac OS X Mountain Lion . Aparentemente, fazer essa atualização remove os compiladores da linha de comando.

Consertar:

  • Desinstalei minha versão muito antiga do Xcode (executei o script de desinstalação em / Developer / Library). Em seguida, exclua o diretório / Developer.
  • Foi à AppStore e baixou o Xcode.
  • Lançou o Xcode e foi para Preferências -> Downloads e instalou as ferramentas de linha de comando.
Sunil D.
fonte
0

Você está recebendo esse problema porque não instalou o MySql. Antes de instalar o mysql2 gem. Instale o MySQL. Depois disso, o mysql2 gem será instalado.

Amrit Dhungana
fonte
0

Eu só queria adicionar esta resposta especificamente para usuários de Mac .

Meu servidor estava funcionando perfeitamente até atualizar meu xcode. Enquanto iniciava meu servidor Rails, o erro era mostrado assim

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 houve uma sugestão para instalar o mysql2 gem no final da mensagem de erro. Então, quando eu tentei instalá-lo, recebi o erro acima mencionado nesta pergunta. O erro que recebi é o seguinte

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

Então, como sugerido neste post, tentei 'brew install mysql' e isso parou de dizer que a versão do mysql já estava instalada. Mas houve um aviso antes de dizer

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

Então eu tentei isso sudo xcodebuild -licensee digite 'concordo' no final. Você precisa ser root para concordar com a licença.

Depois disso, tentei novamente instalar o pacote e tudo está funcionando normalmente. [Mesmo devido a essa atualização do xcode, também tive problemas com a minha torre.]

Sony Mathew
fonte
0

libmysql-ruby foi eliminado e substituído. Novo comando:

 sudo apt-get install ruby-mysql libmysqlclient-dev
Jerome
fonte