Fehler bei der Installation von mysql2: Fehler beim Erstellen der nativen Gem-Erweiterung

485

Ich habe einige Probleme beim Versuch, mysql2gem for Rails zu installieren . Wenn ich versuche , es zu installieren , indem Sie bundle installoder gem install mysql2es gibt mir die folgende Fehlermeldung:

Fehler bei der Installation von mysql2: FEHLER: Fehler beim Erstellen der nativen Gem-Erweiterung.

Wie kann ich das beheben und erfolgreich installieren mysql2?

Raumschlüssel
quelle
In meinem Fall Ruby 2.1 wurde kein Fehler angezeigt, aber es fror einige Minuten lang ein. Die Spacemonkey-Antwort hat das Problem behoben.
Lucio

Antworten:

915

Unter Ubuntu / Debian und anderen Distributionen mit aptitude:

sudo apt-get install libmysql-ruby libmysqlclient-dev

Paket libmysql-rubywurde auslaufen und ersetzt durch ruby-mysql. Hier habe ich die Lösung gefunden.

Wenn der obige Befehl nicht funktioniert, weil er libmysql-rubynicht gefunden werden kann, sollte Folgendes ausreichen:

sudo apt-get install libmysqlclient-dev

Unter Red Hat / CentOS und anderen Distributionen mit yum:

sudo yum install mysql-devel

Unter Mac OS X mit Homebrew :

brew install mysql
Raumschlüssel
quelle
5
Ich habe das gleiche Problem unter Windows 7 .. irgendwelche Ideen? Der Befehl oben hat bei mir nicht funktioniert.
Femi
37
Hallo, ich verwende Ubuntu 12.04 mit Ruby 1.9.3 und Rails 3.2.8 und in meinem Fall war die Installation libmysqlclient-devausreichend.
SMMousavi
2
Wenn Sie Mac OSX verwenden: Aktualisieren Sie auf die neueste Version von XCode und installieren Sie die Entwicklungstools. Ich hatte das gleiche MySQL-Installationsproblem (auch bei Verwendung von --with-mysql-config = / usr / local / mysql / bin / mysql_config)
Americo Savinon
2
Ich brauchte libmysql-ruby nicht, da ich Ruby über RVM installiert hatte
Michael Lang
1
Für Windows versuchen Sie die angekreuzte Antwort von stackoverflow.com/questions/19014117/…
nitigyan
60

Ich bin auf einem Mac und verwende Homebrew , um Open Source-Programme zu installieren. Ich musste Mac Dev Tools installieren, um Homebrew zu installieren, aber danach war es einfach:

brew install mysql

MySQL installieren. Ich habe seitdem kein MySQL-Edelsteinproblem mehr gehabt.

Kelsin
quelle
3
Ich bekomme auch danach einen Fehler. Sollte ich einige Optionen übergeben, wenn ich gem i mysql2 mache?
Hnprashanth
Nachdem ich dies ausgeführt hatte, hatte ich keine Probleme, das Ruby Gem von mysql2 unter Mac OSX Lion zu installieren.
KrisG
3
Wenn dies nicht hilft, versuchen Sie es brew link mysql --force.
Chuck Batson
34

Hier ist eine Lösung für die Windows-Benutzer , hoffe es hilft!

Verwenden von MySQL mit Rails 3 unter Windows

  • Railsinstaller installieren -> www.railsinstaller.org (Ich habe es auf c: \ Rails installiert)

  • Installieren Sie MySQL (ich habe MySQL 5.5 verwendet) -> dev.mysql.com/downloads/installer/

--- für die mySQL-Installation ---

Wenn Sie diese beiden Dateien noch nicht installiert haben, benötigen Sie sie möglicherweise, um MySQL zum Laufen zu bringen.

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

Verwenden Sie die Standardinstallation Developer Machine

-MySQL Server-Konfiguration
: 3306
Windows-Dienstname: MySQL55 MySQL-
Root-Pass: Root (Sie können dies später ändern)
(Benutzername: Root)
-MySQL Server-Konfiguration-

--- für die mySQL-Installation ---


--- Installiere das mysql2 Gem ---

Wichtig: Mach das mit der Git Bash Kommandozeile (dies wurde mit dem Railsinstaller installiert) -> start / Git Bash

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

Jetzt sollte

das Gem korrekt installiert sein. Kopieren Sie zuletzt die Datei libmysql.dll von
C: \ Programme \ MySQL \ MySQL Server 5.5 \ lib
nach
C: \ Rails \ Ruby1.9.2 \ bin

--- Installieren Sie das mysql2 Gem ---


Sie können jetzt Ihre Rails-App mit MySQL verwenden, wenn Sie nicht sicher sind, wie Sie eine Rails 3-App mit MySQL erstellen sollen. Lesen Sie weiter ...


---

Starten Sie eine Rails 3-App mit MySQL --- Öffnen Sie die Eingabeaufforderung (nicht Git Bash) -> start / cmd
Navigieren Sie zu Ihrem Ordner (c: \ Sites).
Erstellen Sie eine neue Rails-App

rails new world

Löschen Sie die Datei c: \ Sites \ world \ public \ index.html
Bearbeiten Sie die Datei c: \ Sites \ world \ config \ route.rb Fügen
Sie diese Zeile hinzu -> root: to => 'Städte # Index'

Öffnen Sie die Eingabeaufforderung (generieren Sie Ansichten und Controller).

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



Bearbeiten Sie die Datei c: \ Sites \ world \ app \ models \ city.rb so, dass sie so aussieht

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

Bearbeiten Sie die Datei c: \ Sites \ world \ config \ database.yml so, dass sie so aussieht

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

zu gemfile hinzufügen

gem 'mysql2'

Öffnen Sie die Eingabeaufforderung Windows Cmd, nicht Git Bash (führen Sie Ihre App aus!).
Navigieren Sie zu Ihrem App-Ordner (c: \ Sites \ world).

rails s

Öffnen Sie hier Ihren Browser -> http: // localhost: 3000

--- Holen Sie sich eine Rails 3-App mit MySQL ---

Francois
quelle
Vielen Dank, das Problem war, dass ich Widnows PowerShell und nicht normale Eingabeaufforderung verwendet. jetzt funktioniert es :)
Danpe
Der Host muss 127.0.0.1 sein, und wenn das Passwort eine Nummer ist, muss es in Anführungszeichen ex '123456' gesetzt werden, andernfalls können wir normalerweise ex admin123
duykhoa
3
Verwenden von XAMPP:gem install mysql2 -- --with-mysql-dir=C:\xampp\mysql
Mifeng
Schauen Sie sich den Pfad an --with-mysql-include: gem install mysql2 - --platform = ruby ​​--with-mysql-lib = "d: \ mariadb \ lib" --with-mysql-include = "d: \ mariadb \ include \ mysql "
Ivan
@ Mifeng hat super für mich funktioniert, aber ich benutze GitBash und brauchte -- --with-mysql-dir="C:\xampp\mysql"ohne die Anführungszeichen meine `` wurden entfernt. Vielen Dank
Mutmatt
20

Ich habe mehrere Computer, 32- und 64-Bit-Prozessor, sie laufen unter Ubuntu Linux, Maverick (10.10).

Ich hatte das gleiche Problem und für mich hat das sudo apt-get install libmysql-ruby libmysqlclient-dev den Job gemacht !!!

OfficeYA
quelle
19

Für 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
quelle
sowie für MacOS Catalina
Vlad
17

Ein anderer Weg für MacOS-Benutzer

Wenn Sie "Brew" verwendet haben, um MySQL zu installieren:

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

xxx = Version des mysql2-Gems, das Sie installieren möchten
yyy = die Version von mysql, die Sie installiert haben ls /usr/local/Cellar/mysql, um es zu finden.

aruanoc
quelle
Versuchte ~ 10 Antworten von allen Arten von Fragen, die hier gestellt wurden ... Du hast es gelöst. Danke :)
Stan
7

Haben Sie versucht, zu verwenden

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

um den Speicherort des Basisverzeichnisses sowie den Pfad zu den MySQL-Bibliotheken anzugeben, die zum Abschließen der Gem-Installation erforderlich sind?

Quellen: MySQL Gem Install ERROR: Fehler beim Erstellen der nativen Gem-Erweiterung MySQL Forums :: Ruby :: Hilfe bei der Installation der MySQL-Bindung für Ruby erforderlich

João Pereira
quelle
Hat super funktioniert. Ich musste einen anderen Pfad verwenden, den ich durch Aufrufen which mysqlund anschließendes Suchen des libVerzeichnisses gefunden habe.
Joshua Pinter
7

Wenn Sie yum verwenden, versuchen Sie:

sudo yum install mysql-devel
Mark Locklear
quelle
Es funktionierte für mich in einer auf CentOS basierenden Amazon EC2 Micro Instance.
Lennon
5

Dies löste mein Problem einmal 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
Carlos Pardilla
quelle
Ich wollte gerade die Quelle veröffentlichen, aber ich sehe, dass Benutzer Ritesh Kumar dies bereits getan hat. Also sein Verdienst, nicht meins.
Carlos Pardilla
Wenn Ihre Bibliothek keinen opt-Ordner hat:gem install mysql2 --platform=ruby -- --with-mysql-dir=X: --without-opt-dir
Junior Mayhé
5

Wenn Sie immer noch Probleme haben ...

Versuchen Sie die Installation

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

Ich hatte dieses Problem unter Windows 7. Dies ist anscheinend ein Inkompatibilitätsproblem und die Lösung lautet wie folgt:

Laden Sie die libmySQL.dllDatei von einem älteren InstantRails-Installationsprogramm herunter. Es ist im InstantRails GitHub-Repo erhältlich .

Kopieren Sie als Nächstes diese Datei in Ihren Ruby / bin-Ordner.

Jetzt kannst du loslegen;)

santo101
quelle
1
Hrm. :( Ich habe versucht, aber immer noch Fehler beim Versuch zu laufen bundle install.
Aakoch
3

Ich habe auch diesen Fehler bekommen. Gelöst durch die Installation von Entwicklungspaketen. Ich benutze Arch und es war:

sudo pacman -S base-devel

welche installiert:

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

aber ich denke es brauchte tatsächlich make und gcc. Fehlerausgabe sagte (unter anderem auf meinem Computer):

"Sie müssen zuerst Entwicklungstools installieren."

Es war also eine offensichtliche Entscheidung und es hat geholfen.

Arty
quelle
3

Sie müssen einige Abhängigkeiten installieren

sudo apt-get install libmysql-ruby libmysqlclient-dev
Vipin
quelle
3

Auf Debian Stretch war das Paket, das für mich funktionierte, default-libmysqlclient-dev

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

Ali Yazdani
quelle
3

In meinem Fall hat dies geholfen:

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

Dann:

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

Ergebnis:

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

Siehe diesen Beitrag (WARNUNG: Japanische Sprache im Inneren).

Nobita
quelle
3

Unter Ubuntu (18.04)

Ich konnte dieses Problem lösen, indem ich Folgendes ausführte:

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

Referenz

Paa Yaw
quelle
2

Ich habe diesen Fehler auf meinem Mac festgestellt und festgestellt, dass ich ein Upgrade von MySQL 32-Bit auf MySQL 64-Bit durchführen musste, damit dieser Fehler behoben wird. Ich habe OSX 10.6 auf einem Intel MacBook Pro mit Ruby 1.9.2 und Rails3.0.0 ausgeführt

Ich musste auch xcode installieren, um Unix-Dienstprogramme wie "make" zu erhalten, die zum Kompilieren des Gems erforderlich sind.

Sobald dies erledigt war, konnte ich gem install mysql und gem install mysql2 ohne Fehler ausführen.

lofte
quelle
1

Für Windows-Benutzer: Sie legen die lib und den Pfad Ihrer MySQL fest. Wenn Sie beispielsweise xampp verwenden, können Sie Folgendes tun:

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

Die Lösung funktioniert nur unter Mac OS X.

Wenn Sie MySQL mit Homebrew installiert haben, haben Sie MySQL deinstalliert und MySQL Community Edition über die MySQL-Website ( https://www.mysql.com/ ) installiert .

Geben Sie nach der Installation den Befehl einfach erneut ein gem install mysql2oder falls erforderlich sudo gem install mysql2, wenn Sie Probleme mit der Verweigerung der Berechtigung erhalten.

the12
quelle
0

Ich habe das Juwel unter Mac OS X 10.6.6 erstellt von 1) Sicherstellen, dass das Developer Tools-Paket installiert ist 2) Herunterladen des aktuellen MySQL-Pakets (in meinem Fall 5.5.8) von Source 3) Installieren des cmake-Tools von cmake.org 4 ) Befolgen Sie die Anweisungen in Abschnitt 2.11 von INSTALL-SOURCE aus den MySQL-Distributionsdateien. 5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include Das Juwel wurde erfolgreich erstellt, aber es gibt zwei Fehler in der Dokumentation, über die sich rdoc und ri beschweren. Aber jetzt, wenn ich versuche, 'mysql2' zu benötigen, bekomme ich eine

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

Ich hatte gehofft, der Fehler, den ich bekommen würde, war, dass die libmysqlclient.16.dylib nicht gefunden werden konnte, weil wir das in einem anderen Beitrag herausgefunden haben (Suche nach install_name_tool).

Mein $ PATH enthält / usr / local / mysql (dort befinden sich meine Quell- und erstellten Dateien), daher bin ich etwas ratlos. Wenn jemand irgendwelche Gedanken hat, werde ich nach ein paar Stunden Schlaf zurückschauen.

Tobinjim
quelle
0

Nachdem Sie die Probleme mit mysql-dev behoben haben, müssen Sie möglicherweise die fehlerhafte Installation von mysql2 entfernen. Schauen Sie sich die Meldungen nach der Installation von $ bundle genau an. Möglicherweise müssen Sie

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

Dadurch wird die fehlerhafte mysql2-Installation behoben, sodass durch eine endgültige Installation des $ bundle eine gute erstellt werden kann.

mmell
quelle
0

Erhielt die Meldung "Sie müssen zuerst die Entwicklungstools installieren." Fehler beim Versuch, das mysql2-Juwel nach dem Upgrade auf Mac OS X Mountain Lion zu installieren . Anscheinend werden durch dieses Upgrade die Befehlszeilen-Compiler entfernt.

Reparieren:

  • Ich habe meine sehr alte Version von Xcode deinstalliert (habe das Deinstallationsskript in / Developer / Library ausgeführt). Löschen Sie dann das Verzeichnis / Developer.
  • Ging zum AppStore und lud Xcode herunter.
  • Startete Xcode und ging in die Einstellungen -> Downloads und installierte die Befehlszeilentools.
Sunil D.
quelle
0

Sie erhalten dieses Problem, weil Sie MySql nicht installiert haben. Vor der Installation von mysql2 gem. Installieren Sie MySQL. Danach wird mysql2 gem installiert.

Amrit Dhungana
quelle
0

Ich wollte diese Antwort nur speziell für Mac-Benutzer hinzufügen .

Mein Server lief einwandfrei, bis ich meinen xcode aktualisiert habe. Beim Starten meines Rails-Servers wurde der Fehler folgendermaßen angezeigt

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)

Und es gab einen Vorschlag, mysql2 gem am Ende der Fehlermeldung zu installieren. Als ich versuchte, es zu installieren, bekam ich den oben in dieser Frage erwähnten Fehler. Der Fehler, den ich bekam, ist wie folgt

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

Wie in diesem Beitrag vorgeschlagen, habe ich versucht, "Brew MySQL installieren" und das hat aufgehört zu sagen, dass MySQL-Version so und so bereits installiert ist. Aber es gab eine Warnung davor

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

Dann habe ich es versucht sudo xcodebuild -licenseund am Ende 'zustimmen' eingegeben. Sie müssen root sein, um der Lizenz zuzustimmen.

Danach habe ich erneut versucht, das Bundle zu installieren, und dann funktioniert alles wie gewohnt. [Trotz dieser Xcode-Aktualisierung hatte ich auch Probleme mit meinem Tower.]

Sony Mathew
quelle
0

libmysql-ruby wurde auslaufen und ersetzt. Neuer Befehl:

 sudo apt-get install ruby-mysql libmysqlclient-dev
Hieronymus
quelle