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

Mam pewne problemy podczas próby instalacji mysql2 gem dla Rails. Kiedy próbuję go zainstalować, uruchamiając bundle install lub gem install mysql2, pojawia się następujący błąd:

[[4]} Błąd instalacji mysql2: błąd: nie udało się zbudować natywnego rozszerzenia gem.

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

Author: Ritesh Kumar, 2010-08-31

27 answers

Na Ubuntu / Debianie i innych dystrybucjach używających aptitude:

sudo apt-get install libmysql-ruby libmysqlclient-dev

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

Jeśli powyższe polecenie nie działa, ponieważ nie można znaleźć libmysql-ruby, wystarczy:

sudo apt-get install libmysqlclient-dev

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

sudo yum install mysql-devel

Na Mac OS X z Homebrew :

brew install mysql
 929
Author: spacemonkey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-09 20:23:53

Jestem na Macu i używam homebrew do instalacji programów open source. Musiałem zainstalować mac dev tools, aby zainstalować homebrew, ale potem było to proste:

brew install mysql

Aby zainstalować mysql. Od tamtej pory nie miałem problemu z mysql gem.

 61
Author: Kelsin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-09 18:53:41

Oto rozwiązanie dla użytkowników systemu windows , mam nadzieję, że pomoże!

Używanie MySQL z Rails 3 Na Windows

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

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

--- do instalacji mySQL - - -

jeśli nie masz jeszcze tych dwa pliki zainstalowane mogą być potrzebne 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 Maszyna Programistyczna

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

--- do instalacji mySQL---


--- zainstaluj Gem mysql2 ---

Ważne: wykonaj to z wiersza poleceń Git Bash (to zostało zainstalowane z railsinstaller) - > start / Git Bash

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

Teraz gem powinien być zainstalowany poprawnie

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

--- zainstaluj Gem mysql2 ---


Teraz będziesz mógł używać aplikacji Rails z MySQL, jeśli nie jesteś pewien, jak utworzyć aplikację Rails 3 z MySQL read on..


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

Otwórz wiersz polecenia (nie Git Bash) - > start/cmd
Przejdź do folderu (c:\Sites)
Tworzenie nowej aplikacji rails

rails new world

Usuń plik c:\Sites\world\public\index.html
Edytuj plik c:\Sites\world\config\routes.rb
dodaj tę linię - > 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 to look like this

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

Dodaj do gemfile

gem 'mysql2'

Otwórz wiersz polecenia Windows cmd, nie Git Bash (uruchom swoją 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 ---

 35
Author: Francois,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-16 19:44:04

Dla 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

 27
Author: Allen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-11 13:48:01

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

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

 20
Author: OfficeYA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-23 07:44:18

Inny sposób dla użytkowników MacOS

Jeśli użyłeś "brew" do instalacji mysql:

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

X. x. X = wersja kleju mysql2, którą chcesz zainstalować
y. y. y = wersja mysql, którą zainstalowałeś ls /usr/local/Cellar/mysql, aby ją znaleźć.

 18
Author: aruanoc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-30 15:15:01

Na Ubuntu(18.04)

Udało mi się rozwiązać ten problem, uruchamiając:

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

Odniesienie

 10
Author: Paa Yaw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-25 07:56:13

Czy próbowałeś użyć

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

Aby określić lokalizację katalogu oraz ścieżkę do bibliotek MySQL, które są niezbędne do zakończenia instalacji gem?

Źródła: W tym celu prosimy o zapoznanie się z naszą polityką prywatności.]} MySQL Forums:: Ruby:: potrzebna pomoc przy instalacji oprawy MySQL dla Ruby

 7
Author: João Pereira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-31 11:23:30

Jeśli używasz yum spróbuj:

sudo yum install mysql-devel
 7
Author: Mark Locklear,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-30 22:58:07

To rozwiązało mój problem raz w 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
 5
Author: Carlos Pardilla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-09 01:40:15

Jeśli nadal masz problemy....

Spróbuj zainstalować

   sudo apt-get install ruby1.9.1-dev
 5
Author: capu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-05 11:32:15

Na Debianie Stretch działającym dla mnie pakietem był default-libmysqlclient-dev

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

 4
Author: Ali Yazdani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-30 19:57:10

Miałem ten problem na Windows 7. Jest to najwyraźniej problem niezgodności i rozwiązanie jest następujące:

Pobierz Plik libmySQL.dll ze starszego instalatora InstantRails. Jest on dostępny z InstantRails GitHub repo .

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

Teraz możesz iść ;)

 4
Author: santo101,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-09 23:57:20

W moim przypadku pomogło:

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

Wtedy:

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 (Uwaga: Język Japoński w środku).

 4
Author: Aurelio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-07 09:33:39

Ja też mam ten błąd. Rozwiązany poprzez zainstalowanie pakietów programistycznych. Używam Archa i było:

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 to rzeczywiście potrzebne make i gcc. Wyjście błędu powiedział (na moim komputerze, między innymi):

" najpierw musisz zainstalować narzędzia programistyczne."

Więc to była oczywista decyzja i pomogła.
 3
Author: arty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-16 12:40:42

Musisz zainstalować pewne zależności

sudo apt-get install libmysql-ruby libmysqlclient-dev
 3
Author: vipin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-28 13:29:42

Uruchomiłem ten błąd na moim komputerze mac i okazało się, że muszę uaktualnić z mysql 32bit do mysql 64 bit, aby ten błąd zniknął. Używałem OSX 10.6 na intel macbook pro z ruby 1.9.2 i rails3. 0. 0

Musiałem również zainstalować xcode, aby uzyskać narzędzia uniksowe, takie jak "make", które są wymagane do kompilacji gem.

Kiedy to zostało zrobione, byłem w stanie uruchomić Gem install mysql i Gem install mysql2 bez błędu.

 2
Author: lofte,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-16 17:11:16

Dla użytkownika windows: Ustawiasz lib i dołączasz ścieżkę mysql, na przykład, jeśli używasz xampp, możesz mieć tak:

gem install mysql2 -- '--with-mysql-lib="C:\xampp\mysql\lib" --withmysql-include="C:\xampp\mysql\include"'
 1
Author: Arman Ortega,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-13 05:39:56

Rozwiązanie działa tylko na Mac OS X

Jeśli zainstalowałeś MySQL z homebrew, zadziałało dla mnie odinstalowanie MySQL i zainstalowanie MySQL Community Edition przez stronę MySQL ( https://www.mysql.com/).

Po zainstalowaniu, po prostu wprowadź ponownie polecenie gem install mysql2 lub jeśli to konieczne, sudo gem install mysql2, Jeśli masz problemy z odmową uprawnień.

 1
Author: the12,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-02 01:51:40

Mam klejnot zbudowany na Mac OS X 10.6.6 przez 1) zapewnienie zainstalowania pakietu narzędzi programistycznych 2) pobranie aktualnego pakietu MySQL (w moim przypadku 5.5.8) ze źródła 3) Instalacja narzędzia cmake z cmake.org 4) postępuj zgodnie z instrukcjami w punkcie 2.11 INSTALL-SOURCE z plików dystrybucyjnych mysql 5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include Gem zbudowany pomyślnie, ale są dwa błędy w dokumentacji, na które RDOC i ri narzekają. Ale teraz kiedy próbuję wymagać 'mysql2' dostaję

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

Miałem nadzieję, że błędem, który otrzymałem, było to, że libmysqlclient.16.dylib nie mógł zostać znaleziony, ponieważ dowiedzieliśmy się o tym w innym poście (Szukaj install_name_tool).

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

 0
Author: tobinjim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-13 08:22:40

Jeśli nadal pojawia się błąd, wykonaj kroki instalacji mysql2 gem on Rails 3 on -

Http://rorguide.blogspot.com/2011/03/installing-mysql2-gem-on-ruby-192-and.html

Gdzie większość użytkowników była w stanie zainstalować mysql2 gem.

 0
Author: Ritesh Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-30 18:45:54

Po poprawieniu problemów z mysql-dev może być konieczne usunięcie złej instalacji mysql2. Przyjrzyj się uważnie komunikatom po instalacji $ bundle. Należy zachować tę ulotkę, aby w razie potrzeby móc ją ponownie przeczytać.]}

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

Usunie to złą instalację mysql2, aby finalna instalacja $ bundle mogła stworzyć dobrą.

 0
Author: mmell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-13 02:49:51

Pobierz odpowiednią wersję mysqllib.dll następnie skopiować go do Ruby bin naprawdę działa dla mnie. Kliknij ten link mysql2 gem skompilowany dla błędnej biblioteki klienta mysql

 0
Author: Bruce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:38

DostaĹ ' em "najpierw musisz zainstalowaÄ ‡ narzÄ ™ dzia programistyczne."błąd podczas próby zainstalowania mysql2 gem po aktualizacji do Mac OS X Mountain Lion. Najwyraźniej wykonanie tej aktualizacji usuwa Kompilatory linii poleceń.

Do naprawy:

  • odinstalowałem moją bardzo starą wersję Xcode (uruchomiłem skrypt odinstalowujący w /Developer/Library). Następnie usunięto katalog / Developer.
  • poszedłem do AppStore i pobrałem Xcode.
  • uruchomił Xcode i wszedł do Preferencje - > pliki do pobrania i zainstalowane narzędzia wiersza poleceń.
 0
Author: Sunil D.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-12 02:10:04

Dostajesz ten problem, ponieważ nie zainstalowałeś MySql. Przed zainstalowaniem mysql2 gem. Zainstaluj MySQL. Następnie zainstaluje się mysql2 gem.

 0
Author: Amrit Dhungana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-18 21:07:44

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

Mój serwer działał idealnie, dopóki nie zaktualizowałem mojego xcode. Podczas uruchamiania mojego serwera rails błąd został pokazany w następujący 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ć mysql2 gem na końcu Komunikatu o błędzie. Więc kiedy próbowałem go zainstalować, dostałem błąd, jak wspomniano powyżej w tym pytaniu. Błąd, który dostałem jest następujący

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

Tak jak sugerowałem w tym poście próbowałem ' brew install mysql ' i to się skończyło mówiąc, że mysql Wersja tak i tak już zainstalowany. Ale przed nim było 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

Następnie próbowałem tego sudo xcodebuild -license i wpisz "zgadzam się" na końcu. Musisz być root, aby zgodzić się na licencję.

Po tym, ponownie próbowałem zainstalować pakiet, a potem wszystko działa normalnie. [ Nawet z powodu tej aktualizacji xcode, miałem problem z moją wieżą również.]

 0
Author: Sony Mathew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-01 07:29:30

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

 sudo apt-get install ruby-mysql libmysqlclient-dev
 0
Author: Jerome,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-12 10:41:37