Błąd instalacji mysql2: Nie udało się zbudować natywnego rozszerzenia gem


485

Mam problemy podczas próby zainstalowania mysql2klejnotu w Railsach. Gdy próbuję zainstalować, uruchamiając bundle installlub wyświetla gem install mysql2mi następujący błąd:

Błąd podczas instalacji mysql2: ERROR: Nie udało się zbudować rozszerzenia natywnego gem.

Jak mogę to naprawić i pomyślnie zainstalować mysql2?


W moim przypadku ruby ​​2.1 nie był wyświetlany błąd, ale zawieszał się na kilka minut. Odpowiedź Spacemonkey naprawiła to.
Lucio,

Odpowiedzi:


915

W Ubuntu / Debian i innych dystrybucjach korzystających z aptitude:

sudo apt-get install libmysql-ruby libmysqlclient-dev

Pakiet libmysql-rubyzostał wycofany i zastąpiony przez ruby-mysql. Tutaj znalazłem rozwiązanie.

Jeśli powyższe polecenie nie działa, ponieważ libmysql-rubynie można go znaleźć, wystarczą następujące czynności:

sudo apt-get install libmysqlclient-dev

W Red Hat / CentOS i innych dystrybucjach używających yum:

sudo yum install mysql-devel

W systemie Mac OS X z Homebrew :

brew install mysql

5
mam ten sam problem w systemie Windows 7… jakieś pomysły? powyższe polecenie nie działało dla mnie ..
femi

37
Witam, używam Ubuntu 12.04 z Ruby 1.9.3 i Railsami 3.2.8, aw moim przypadku instalacja libmysqlclient-devbyła wystarczająca.
SMMousavi,

2
Jeśli używasz Mac OSX: zaktualizuj do najnowszej wersji XCode i zainstaluj Narzędzia programistyczne. Miałem ten sam problem z instalacją mysql (nawet przy użyciu opcji --with-mysql-config = / usr / local / mysql / bin / mysql_config)
Americo Savinon

2
Nie potrzebowałem libmysql-ruby, ponieważ zainstalowałem Ruby za pośrednictwem RVM
Michael Lang,

1
W przypadku systemu Windows spróbuj zaznaczyć odpowiedź z stackoverflow.com/questions/19014117/…
nitigyan

60

Jestem na komputerze Mac i używam homebrew do instalowania programów typu open source. Musiałem zainstalować narzędzia Mac Dev, aby zainstalować Homebrew, ale potem było to proste:

brew install mysql

zainstalować mysql. Od tamtej pory nie miałem problemu z klejnotem MySQL.


3
Dostaję błąd nawet po zrobieniu tego. Czy powinienem przekazać kilka opcji, kiedy robię klejnot i mysql2?
hnprashanth

Po uruchomieniu tego nie miałem problemów z instalacją ruby ​​mysql2 na Mac OSX Lion.
KrisG

3
Jeśli to nie pomoże, spróbuj brew link mysql --force.
Chuck Batson,

34

oto rozwiązanie dla użytkowników systemu Windows , mam nadzieję, że to pomoże!

Używanie MySQL z Rails 3 w systemie Windows

  • Zainstaluj railsinstaller -> www.railsinstaller.org (zainstalowałem go na c: \ Rails)

  • Zainstaluj MySQL (użyłem MySQL 5.5) -> dev.mysql.com/downloads/installer/

--- do instalacji mySQL ---

Jeśli nie masz jeszcze zainstalowanych tych dwóch plików, możesz potrzebować ich do uruchomienia 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

Użyj domyślnej instalacji Maszyny programisty

-MySQL Server Config-
: 3306
nazwa usługi systemu Windows: MySQL55
mysql root pass: root (możesz to zmienić później)
(nazwa użytkownika: root)
-MySQL Server Config-

--- dla instalacji mySQL ---


--- Zainstaluj klejnot mysql2 ---

Ważne: Zrób to za pomocą wiersza poleceń Git Bash (to zostało zainstalowane za pomocą railsinstaller) -> start / Git Bash

gem install mysql2 - '--with-mysql-lib = "c: \ Pliki programów \ MySQL \ MySQL Server 5.5 \ lib "--with-mysql-include =" c: \ Program Files \ MySQL \ MySQL Server 5.5 \ include "'

Teraz klejnot powinien zostać poprawnie zainstalowany

Na koniec skopiuj plik libmysql.dll z
C: \ Program Files \ MySQL \ MySQL Server 5.5 \ lib
do
C: \ Rails \ Ruby1.9.2 \ bin

--- Zainstaluj klejnot mysql2 ---


Będziesz mógł teraz korzystać z aplikacji Rails z MySQL, jeśli nie masz pewności, jak utworzyć aplikację Rails 3 z MySQL odczytywanym ...


---

Uruchom aplikację Rails 3 z MySQL --- Otwórz wiersz polecenia (nie Git Bash) -> start / cmd
Przejdź do folderu (c: \ Sites)
Utwórz nową aplikację Rails

rails new world

Usuń plik c: \ Sites \ world \ public \ index.html
Edytuj plik c: \ Sites \ world \ config \ trasy.rb
dodaj ten wiersz -> root: to => 'cities # index'

Otwórz wiersz polecenia (generuj widoki i kontrolery)

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



Edytuj plik c: \ Sites \ world \ app \ models \ city.rb, aby wyglądał tak:

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

Edytuj plik c: \ Sites \ world \ config \ database.yml, aby wyglądał tak:

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

dodaj do pliku gem

gem 'mysql2'

Otwórz wiersz polecenia Windows cmd, a nie Git Bash (uruchom aplikację!)
Przejdź do folderu aplikacji (c: \ Sites \ world)

rails s

Otwórz swoją przeglądarkę tutaj -> http: // localhost: 3000

--- Pobierz aplikację Rails 3 z MySQL ---


Dzięki, problem polegał na tym, że użyłem programu Windows PowerShell, a nie zwykłego wiersza polecenia. teraz działa :)
Danpe

host musi mieć numer 127.0.0.1, a jeśli hasło jest liczbą, należy wpisać cytat ex „123456”, w przeciwnym razie możemy wpisać normalnie ex admin123
duykhoa

3
Za pomocą XAMPP:gem install mysql2 -- --with-mysql-dir=C:\xampp\mysql
Mifeng

Spójrz na ścieżkę --with-mysql-include: gem install mysql2 - --platform = ruby ​​--with-mysql-lib = "d: \ mariadb \ lib" --with-mysql-include = "d: \ mariadb \ include \ mysql "
Ivan

@Mifeng działał dla mnie świetnie, ale używam GitBash i potrzebowałem -- --with-mysql-dir="C:\xampp\mysql"bez cudzysłowów moje `` zostały usunięte. Dziękuję
Mutmatt,

20

Mam kilka komputerów, 32- i 64-bitowy procesor, działają na systemie Ubuntu Linux, Maverick (10.10).

Miałem ten sam problem i dla mnie sudo apt-get install libmysql-ruby libmysqlclient-dev wykonałem pracę !!!


19

W systemie 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


a także dla MacOS Catalina
Vlad

17

Kolejny sposób dla użytkowników MacOS

Jeśli użyłeś „naparu” do zainstalowania mysql:

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

xxx = wersja klejnotu mysql, który chcesz zainstalować
yyy = wersja zainstalowanego mysql, ls /usr/local/Cellar/mysqlaby go znaleźć.


Próbowałem ~ 10 odpowiedzi na wszystkie pytania tutaj zadane ... Rozwiązałeś to. Dzięki :)
Stan

7

Próbowałeś użyć

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

określić lokalizację katalogu bazy, a także ścieżkę do bibliotek MySQL niezbędnych do ukończenia instalacji gem?

Źródła: MySQL Gem Install ERROR: Nie udało się zbudować natywnego rozszerzenia Gem Fora MySQL :: Ruby :: Potrzebna pomoc przy instalacji wiązania MySQL dla Ruby


Działa świetnie. Musiałem użyć innej ścieżki, którą znalazłem, dzwoniąc, which mysqla następnie znajdując libstamtąd katalog.
Joshua Pinter

7

Jeśli używasz mniam, spróbuj:

sudo yum install mysql-devel

Działa dla mnie w Amazon EC2 Micro Instance, opartym na CentOS.
Lennon

5

To rozwiązało mój problem raz w systemie 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

Właśnie miałem opublikować źródło, ale widzę, że użytkownik Ritesh Kumar już to zrobił. Więc jego zasługa, nie moja.
Carlos Pardilla,

Jeśli Twoja biblioteka nie ma folderu opt:gem install mysql2 --platform=ruby -- --with-mysql-dir=X: --without-opt-dir
Junior Mayhé

5

Jeśli nadal masz problemy…

Spróbuj zainstalować

   sudo apt-get install ruby1.9.1-dev

4

Miałem ten problem w systemie Windows 7. Jest to najwyraźniej problem niekompatybilności, a rozwiązanie jest następujące:

Pobierz libmySQL.dllplik ze starszego instalatora InstantRails. Jest dostępny z repozytorium InstantRails GitHub .

Następnie skopiuj ten plik do folderu Ruby / bin.

Teraz możesz już iść;)


1
Hmm. :( Próbowałem tego, ale nadal pojawia się błąd podczas próby uruchomienia bundle install.
aakoch

3

Mam też ten błąd. Rozwiązane przez zainstalowanie pakietów programistycznych. Używam arch i było to:

sudo pacman -S base-devel

który zainstalował:

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

ale myślę, że tak naprawdę potrzebował make i gcc. Wyjście błędu powiedział (między innymi na moim komputerze):

„Najpierw musisz zainstalować narzędzia programistyczne.”

To była oczywista decyzja i pomogła.


3

Musisz zainstalować niektóre zależności

sudo apt-get install libmysql-ruby libmysqlclient-dev

3

Na Debian Stretch pakiet, który działał dla mnie to default-libmysqlclient-dev

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


3

W moim przypadku pomogło to:

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

Następnie:

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

Wynik:

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

Zobacz ten post (OSTRZEŻENIE: język japoński w środku).


3

Na Ubuntu (18.04)

udało mi się rozwiązać ten problem, wykonując następujące czynności:

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

odniesienie


2

Napotkałem ten błąd na moim komputerze Mac i stwierdziłem, że muszę zaktualizować wersję mysql 32bit do mysql 64 bit, aby błąd zniknął. Pracowałem na OSX 10.6 na komputerze Mac Mac Pro z Ruby 1.9.2 i Rails 3.0.0

Musiałem także zainstalować xcode, aby uzyskać narzędzia uniksowe, takie jak „make”, które są wymagane do skompilowania klejnotu.

kiedy to zrobiłem, byłem w stanie uruchomić gem install mysql i gem install mysql2 bez błędu.


1

Dla użytkownika systemu Windows: ustawiasz bibliotekę lib i dołączasz ścieżkę do mysql, na przykład, jeśli używasz xampp, możesz to zrobić tak:

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

1

Rozwiązanie działa tylko w systemie Mac OS X

Jeśli zainstalowałeś MySQL z homebrew, działało dla mnie odinstalowanie MySQL i instalacja MySQL Community Edition za pośrednictwem strony MySQL ( https://www.mysql.com/ ).

Po zainstalowaniu wystarczy ponownie wprowadzić polecenie gem install mysql2lub, jeśli to konieczne sudo gem install mysql2, jeśli otrzymujesz problemy z odmową uprawnień.


0

Klejnot zbudowałem w systemie Mac OS X 10.6.6 przez 1) Zapewnienie zainstalowania pakietu narzędzi programisty 2) Pobieranie bieżącego pakietu MySQL (w moim przypadku 5.5.8) ze źródła 3) Instalowanie narzędzia cmake z cmake.org 4 ) Postępując zgodnie z instrukcjami w sekcji 2.11 INSTALACJI-ŹRÓDŁA z plików dystrybucyjnych mysql 5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include Gem został pomyślnie zbudowany, ale w dokumentacji występują dwa błędy, na które narzekają rdoc i ri. Ale teraz, gdy próbuję wymagać 'mysql2', dostaję

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

Miałem nadzieję, że pojawi się błąd polegający na tym, że nie można znaleźć libmysqlclient.16.dylib, ponieważ wymyśliliśmy to w innym poście (wyszukaj nazwę_instalacji_tool).

Mój $ PATH ma w sobie / usr / local / mysql (tam, gdzie znajdują się moje pliki źródłowe i wbudowane), więc jestem trochę zakłopotany. Jeśli ktoś ma jakieś myśli, sprawdzę to po kilku godzinach snu.



0

Po rozwiązaniu problemów z mysql-dev może być konieczne usunięcie złej instalacji mysql2. Przyjrzyj się uważnie komunikatom po instalacji pakietu $. Może być konieczne

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

Spowoduje to usunięcie złej instalacji mysql2, dzięki czemu końcowa instalacja pakietu $ może stworzyć dobrą.



0

Masz „Musisz najpierw zainstalować narzędzia programistyczne”. błąd podczas próby zainstalowania klejnotu mysql2 po aktualizacji do Mac OS X Mountain Lion . Najwyraźniej ta aktualizacja usuwa kompilatory wiersza poleceń.

Naprawić:

  • Odinstalowałem moją bardzo starą wersję Xcode (uruchomiłem skrypt odinstalowujący w / Developer / Library). Następnie usunął katalog / Developer.
  • Udałem się do AppStore i pobrałem Xcode.
  • Uruchomiłem Xcode, przeszedłem do Preferencji -> Pobieranie i zainstalowałem narzędzia wiersza poleceń.

0

Ten problem występuje, ponieważ nie zainstalowałeś MySql. Przed instalacją klejnotu mysql2. Zainstaluj MySQL. Po tym klejnot mysql2 zostanie zainstalowany.


0

Chciałem tylko dodać tę odpowiedź specjalnie dla użytkowników komputerów Mac .

Mój serwer działał idealnie dobrze, dopóki nie zaktualizowałem xcode. Podczas uruchamiania mojego serwera Railsowego błąd był wyświetlany w ten sposób

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)

I pojawiła się sugestia, aby zainstalować klejnot mysql2 na końcu komunikatu o błędzie. Więc kiedy próbowałem go zainstalować, otrzymałem błąd, jak wspomniano powyżej w tym pytaniu. Wystąpił błąd:

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

Tak jak zasugerowałem w tym poście, wypróbowałem „brew install mysql” i przestałem mówić, że wersja mysql jest już zainstalowana. Ale było tam ostrzeżenie

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

Potem spróbowałem sudo xcodebuild -licensei na końcu wpisz „zgadzam się”. Musisz być rootem, aby wyrazić zgodę na licencję.

Następnie ponownie spróbowałem zainstalować pakiet, a następnie wszystko działa normalnie. [Nawet z powodu tej aktualizacji kodu x miałem również problem z moją wieżą.]


0

libmysql-ruby został wycofany i zastąpiony. Nowe polecenie:

 sudo apt-get install ruby-mysql libmysqlclient-dev
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.