web-dev-qa-db-fra.com

Erreur lors de l'installation de mysql2: échec de la création de l'extension native de gem

J'ai quelques problèmes en essayant d'installer mysql2 gem for Rails. Lorsque j'essaie de l'installer en exécutant bundle install ou gem install mysql2, le message d'erreur suivant s'affiche:

Erreur lors de l'installation de mysql2: ERREUR: Echec de la création de l'extension native de gem.

Comment puis-je résoudre ce problème et installer avec succès mysql2?

465
spacemonkey

Sur Ubuntu/Debian et d’autres distributions utilisant aptitude:

Sudo apt-get install libmysql-Ruby libmysqlclient-dev

Le package libmysql-Ruby a été supprimé et remplacé par Ruby-mysql. This c'est là que j'ai trouvé la solution.

Si la commande ci-dessus ne fonctionne pas car libmysql-Ruby est introuvable, les éléments suivants devraient suffire:

Sudo apt-get install libmysqlclient-dev

Sous Red Hat/CentOS et d’autres distributions utilisant yum:

Sudo yum install mysql-devel

Sur Mac OS X avec Homebrew :

brew install mysql
892
spacemonkey

Je suis sur un Mac et utilise homebrew pour installer des programmes open source. Pour installer homebrew, j’ai dû installer des outils de développement pour mac, mais c’était simple:

brew install mysql

installer mysql. Je n'ai pas eu de problème avec MySQL depuis.

58
Kelsin

voici une solution pour les utilisateurs de Windows , espérons que cela aide!

Utilisation de MySQL avec Rails 3 sous Windows

  • Installez railsinstaller -> www.railsinstaller.org (je l'ai installé dans c:\Rails)

  • Installez MySQL (j'ai utilisé MySQL 5.5) -> dev.mysql.com/downloads/installer/

--- pour l'installation de MySQL ---

Si vous n'avez pas déjà ces deux fichiers installés, vous aurez peut-être besoin d'eux pour démarrer votre 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

Utiliser l’installation par défaut de la machine développeur

- Configuration du serveur MySQL -
port: 3306
nom du service Windows: MySQL55
mysql root pass: root (vous pourrez le changer plus tard)
(nom d'utilisateur: root)
- Configuration du serveur MySQL -

--- pour l'installation de MySQL ---


--- Installez le mysql2 Gem ---

Important: Faites ceci avec la ligne de commande Git Bash (installé avec railsinstaller) -> start/Git Bash

gem installe mysql2 - '--with-mysql-lib = "c:\Fichiers de programme\MySQL\Serveur MySQL 5.5\lib" --with-mysql-include = "c:\Fichiers programme\MySQL\MySQL Server 5.5\include "'

Maintenant, la gemme aurait dû être installée correctement

Enfin, copiez le fichier libmysql.dll à partir de
C:\Program Files\MySQL\Serveur MySQL 5.5\lib
à
C:\Rails\Ruby1.9.2\bin

--- Installez la gemme mysql2 ---


Vous pourrez désormais utiliser votre application Rails avec MySQL, si vous ne savez pas comment créer une application Rails 3 avec MySQL continue à lire ...


--- Obtenez une Rails 3 application en cours avec MySQL ---

Ouvrir l'invite de commande (pas Git Bash) -> start/cmd
Naviguez vers votre dossier (c:\Sites)
Créer une nouvelle application Rails

Rails new world

Supprimer le fichier c:\Sites\world\public\index.html
Editez le fichier c:\Sites\world\config\routes.rb
ajoute cette ligne -> racine: à => 'villes # index'

Invite de commande ouverte (générer des vues et des contrôleurs)

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



Modifiez le fichier c:\Sites\world\app\models\city.rb de la manière suivante

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

Editez le fichier c:\Sites\world\config\database.yml pour qu'il ressemble à ceci

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

ajouter à gemfile

gem 'mysql2'

Ouvrez la commande Invite windows cmd, pas Git Bash (lancez votre application!)
Accédez au dossier de votre application (c:\Sites\world).

Rails s

Ouvrez votre navigateur ici -> http: // localhost: 30

--- Obtenez une Rails 3 application en cours avec MySQL ---

34
Francois

J'ai plusieurs ordinateurs, processeurs 32 et 64 bits, ils fonctionnent sous Ubuntu Linux, version Maverick (10.10).

J'ai eu le même problème, et pour moi, le Sudo apt-get install libmysql-Ruby libmysqlclient-dev a fait le travail !!!

20
OfficeYA

Autre moyen pour les utilisateurs de MacOS

Si vous avez utilisé "brew" pour installer mysql:

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

x.x.x = version de la gem mysql2 que vous souhaitez installer
y.y.y = la version de mysql que vous avez installée ls /usr/local/Cellar/mysql pour le trouver.

15
aruanoc

Avez-vous essayé d'utiliser

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

spécifier l'emplacement du répertoire thebase ainsi que le chemin d'accès aux bibliothèques MySQL nécessaires pour terminer l'installation de gem?

Sources: Erreur d'installation de MySQL Gem: Impossible de créer l'extension native de gemForums MySQL :: Ruby :: Aide nécessaire à l'installation de la liaison MySQL pour Ruby

7
João Pereira

Si vous utilisez yum essayez:

Sudo yum install mysql-devel
7
Mark Locklear

Si vous rencontrez toujours des problèmes….

Essayez d'installer

   Sudo apt-get install Ruby1.9.1-dev
5
capu

Cela a résolu mon problème une fois sous 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
Carlos Pardilla

J'ai eu ce problème sur Windows 7. C'est apparemment un problème d'incompatibilité et la solution est la suivante:

Téléchargez le fichier libmySQL.dll à partir d’un ancien programme d’installation InstantRails. Il est disponible à partir du repo InstantRails GitHub .

Ensuite, copiez ce fichier dans votre dossier Ruby/bin.

Maintenant, vous êtes prêt à partir;)

4
santo101

Vous devez installer des dépendances

Sudo apt-get install libmysql-Ruby libmysqlclient-dev
3
vipin

Sur Debian Stretch, le paquet qui a fonctionné pour moi était default-libmysqlclient-dev

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

3
Ali Yazdani

J'ai aussi cette erreur. Résolu en installant des packages de développement. J'utilise Arch et c'était:

Sudo pacman -S base-devel

qui a installé:

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

mais je pense qu’il fallait en fait make et gcc. La sortie d'erreur a dit (sur ma machine, entre autres):

"Vous devez d'abord installer les outils de développement."

C'était donc une décision évidente et ça a aidé.

3
arty

Je courais dans cette erreur sur mon mac et j'ai constaté que je devais passer de mysql 32 bits à mysql 64 bits pour que cette erreur disparaisse. J'exécutais OSX 10.6 sur un MacBook Pro intel avec Ruby 1.9.2 et Rails3.0.0

J'avais également besoin d'installer xcode pour obtenir des utilitaires Unix comme "make" nécessaires à la compilation de la gem.

une fois que cela a été fait, j'ai pu exécuter gem installer mysql et installer gem mysql2 sans erreur.

2
lofte

Dans mon cas, cela a aidé:

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

Ensuite:

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

Résultat:

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

Voir cet article (AVERTISSEMENT: langue japonaise à l'intérieur).

2
Nobita

La solution ne fonctionne que sur Mac OS X

Si vous avez installé MySQL avec homebrew, désinstaller MySQL et installer MySQL Community Edition via le site Web MySQL ( https://www.mysql.com/ ) ont également fonctionné.

Une fois installé, ré-entrez simplement la commande sur gem install mysql2 ou, si nécessaire, Sudo gem install mysql2, si vous rencontrez des problèmes d'autorisation refusés.

1
the12

Pour les utilisateurs Windows: Vous définissez les chemins de bibliothèque et d’inclusion de votre mysql, par exemple, si vous utilisez xampp, vous pouvez avoir ceci:

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

libmysql-Ruby a été supprimé et remplacé. Nouvelle commande:

 Sudo apt-get install Ruby-mysql libmysqlclient-dev
0
Jerome

Pour ceux qui utilisent Windows 7 et MySQL 64 bits

Si vous voulez utiliser MySQL 64 bits, suivez les instructions ici (aussi ici ).

0
Kitanotori

La pierre précieuse a été construite sur Mac OS X 10.6.6 par 1) Vérification de l’installation du package des outils de développement 2) Téléchargement du package MySQL actuel (5.5.8 dans mon cas) depuis Source 3) Installation de l’outil cmake à partir de cmake.org 4 ) En suivant les instructions de la section 2.11 de INSTALL-SOURCE à partir des fichiers de distribution mysql 5) Sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include La gem a été construite avec succès, mais il y a deux erreurs dans la documentation dont rdoc et ri se plaignent. Mais maintenant, quand j'essaie d'exiger 'mysql2', je reçois un

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

J'espérais que l'erreur que j'obtiendrais était que le fichier libmysqlclient.16.dylib était introuvable, car nous l'avions découvert dans un autre article (recherchez install_name_tool).

Mon $ PATH contient/usr/local/mysql (c'est là que se trouvent mes fichiers source et créés), donc je suis un peu perplexe. Si quelqu'un a des idées, je vérifierai après quelques heures de sommeil.

0
tobinjim

Si l'erreur persiste, suivez les étapes de l'installation de mysql2 gem sur Rails 3 sur -

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

où la plupart des utilisateurs ont pu installer mysql2 gem.

0
Ritesh Kumar

téléchargez la bonne version de mysqllib.dll puis copiez-la dans Ruby bin fonctionne vraiment pour moi. Suivez ces liens de liens gem mysql2 compilé pour une mauvaise bibliothèque client mysql

0
Bruce

Une fois les problèmes de mysql-dev résolus, vous devrez peut-être supprimer la mauvaise installation de mysql2. Regardez attentivement les messages après l'installation de $ bundle. Vous devrez peut-être

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

Cela effacera la mauvaise installation de mysql2 afin qu'une installation finale de $ bundle puisse en créer une bonne.

0
mmell

Je voulais juste ajouter cette réponse spécifiquement pour tilisateurs de Mac.

Mon serveur fonctionnait parfaitement bien jusqu'à ce que je mette à jour mon xcode. Tout en démarrant mon serveur Rails, l'erreur était affichée comme ceci

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)

Et il a été suggéré d'installer mysql2 gem à la fin du message d'erreur. Ainsi, lorsque j'ai essayé de l'installer, j'ai eu l'erreur mentionnée ci-dessus dans cette question. L'erreur que j'ai eu est la suivante

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

Donc, comme suggéré dans ce post, j'ai essayé de "brew install mysql" et cela a cessé de dire que la version de mysql était déjà installée. Mais il y avait un avertissement avant de dire

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

Ensuite, j'ai essayé ceci Sudo xcodebuild -license et tapez 'accord' à la fin. Vous devez être root pour accepter la licence.

Après cela, j’ai encore essayé d’installer le bundle puis tout fonctionne normalement. [Même à cause de cette mise à jour de xcode, j'avais aussi un problème avec ma tour.]

0
Sony Mathew

Vous avez le "Vous devez d'abord installer les outils de développement." erreur lors de la tentative d'installation de la gem mysql2 après la mise à niveau vers Mac OS X Mountain Lion. Apparemment, cette mise à niveau supprime les compilateurs de ligne de commande.

Pour réparer:

  • J'ai désinstallé ma très ancienne version de Xcode (j'ai exécuté le script de désinstallation dans/Developer/Library). Supprimez ensuite le répertoire/Developer.
  • Je suis allé à l'AppStore et téléchargé Xcode.
  • Lancement de Xcode, accès aux préférences -> Téléchargements et installation des outils de ligne de commande.
0
Sunil D.

Vous obtenez ce problème parce que vous n'avez pas installé MySql. Avant d'installer mysql2 gem. Installez MySQL. Après cela mysql2 gem va installer.

0
Amrit Dhungana

Pour 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

0
Allen