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
?
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
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.
voici une solution pour les utilisateurs de Windows , espérons que cela aide!
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 ---
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 !!!
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.
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
Si vous utilisez yum essayez:
Sudo yum install mysql-devel
Si vous rencontrez toujours des problèmes….
Essayez d'installer
Sudo apt-get install Ruby1.9.1-dev
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
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;)
Vous devez installer des dépendances
Sudo apt-get install libmysql-Ruby libmysqlclient-dev
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
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é.
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.
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).
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.
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"'
libmysql-Ruby
a été supprimé et remplacé. Nouvelle commande:
Sudo apt-get install Ruby-mysql libmysqlclient-dev
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.
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.
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
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.
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.]
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:
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.
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