rails server ne parvient pas à démarrer avec mysql2 à l'aide de rvm & ruby 1.9.2-p0 sur OSX 10.6.5
J'obtiens l'erreur suivante lorsque je démarre le serveur rails:
$ rails server
/Users/ssmith/.rvm/gems/ruby-1.9.2-p0/gems/mysql2-0.2.6/lib/mysql2.rb:7:in `require': dlopen(/Users/ssmith/.rvm/gems/ruby-1.9.2-p0/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError)
Referenced from: /Users/ssmith/.rvm/gems/ruby-1.9.2-p0/gems/mysql2- 0.2.6/lib/mysql2/mysql2.bundle
Reason: image not found - /Users/ssmith/.rvm/gems/ruby-1.9.2-p0/gems/mysql2-
0.2.6/lib/mysql2/mysql2.bundle
J'ai installé mysql2 avec la commande suivante après la rvm utilisation de ruby 1.9.2-p0 commande:
$ gem install mysql2 -- --with-mysql-dir=/usr/local/mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
Building native extensions. This could take a while...
Successfully installed mysql2-0.2.6
1 gem installed
Installing ri documentation for mysql2-0.2.6...
Enclosing class/module 'mMysql2' for class Client not known
Installing RDoc documentation for mysql2-0.2.6...
Enclosing class/module 'mMysql2' for class Client not known
J'ai mysql2 dans mon Gemfile ainsi que dans la base de données.fichier yml et bundle install complète amende
$ bundle show mysql2
/Users/ssmith/.rvm/gems/ruby-1.9.2-p0/gems/mysql2-0.2.6
Je comprends le serveur rails erreur en ne sachant pas le mysql_config emplacement sur OSX, mais sur les gem install, j'ai spécifié l'emplacement correct. Encore RVM de la gemme n'est pas le respect que mysql_config emplacement, il me semble.
Que quelqu'un a une solution à cela?
Vous devez vous connecter pour publier un commentaire.
Le problème vient de la mysql2 joyau manquant de la dynamique de la bibliothèque à partir de MySQL.
Une solution plus propre que
install_name_tool ...
aurait besoin de mettre à jour votreDYLD_LIBRARY_PATH
pour ajouter des bibliothèques MySQL pour elle. Pour ce faire, de mettre à jour votre~/.bash_profile
pour ajouter la bibliothèque MySQL dossier :export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
Remarque: Vous pouvez mettre à jour la base de données MySQL emplacement en fonction de votre installation,
Cela devrait garder les choses propres, mais aussi de s'assurer que n'importe quel bijou ou de code nécessitant MySQL bibliothèques dynamiques trouverez.
Référence : http://lightyearsoftware.com/2011/02/mysql-5-5-on-mac-os-x/
De référence mise à Jour en juillet 2012: Un changement dans OS X 10.8 rend facile la méthode ci-dessus est moins élégant. Si vous définissez cette variable, chaque fois que vous exécutez un setuid ou setgid programme, vous obtenez ce message d'avertissement sur stderr:
Développeurs Ruby à l'aide de Phusion Passenger Autonome verrez ce message s'affiche dans la console toutes les cinq secondes. Il devient vraiment énervant, très rapide.
J'ai déposé un bug avec Apple. C'est aussi à OpenRadar.
Dans l'intervalle, il y a une troisième façon de résoudre le client bibliothèque problème de chemin d'accès qui ne nécessite pas de réglage DYLD_LIBRARY_PATH (travail autour de cette 10.8 question) ou de piratage .organisez les fichiers avec install_name_tool:
J'ai trouvé la réponse ici: Mysql 5.5, Snow leopard et les rails
install_name_tool
de commande. Sébastien réponse, qui renvoie à mon blog, propose une solution plus propre, à mon avis.Sur OS X 10.8 (Mountain Lion), les réponses ont tous des problèmes, comme indiqué dans les réponses et les commentaires.
DYLD_LIBRARY_PATH
à include /usr/local/mysql/lib donne des avertissements à partir de OS X et de brasserinstall_name_tool
de pirater où la gemme binaire semble aurait besoin d'être refait à chaque fois que le gem est installé ou mis à niveau.brew
s'mysql peut ne pas fonctionner; et, en tout cas, je ne veux pas reconfigurer déjà d'un travail d'installationPlus simple et robuste solution à mon humble avis est de mettre un lien à la bibliothèque dans la dynamique par défaut chemin de recherche des bibliothèques, qui comporte
/usr/local/lib
. Qui est:Projet de loi,
De frédéric réponse permettra de résoudre ce problème, cependant, vous devrez peut-être modifier certains des éléments de la commande en fonction des versions et de la façon dont les choses sont nommés sur votre système.
Par exemple, sur la version la plus récente de mysql libmysqlclient.16.dylib est en fait libmysqlclient.18.dylib. Essayez de faire un:
Si cela ne retourne pas le chemin, vous pouvez aller à:
pour trouver le fichier. Alors juste un PWD pour trouver le bon répertoire pour la commande.
Vous aurez aussi besoin de déterminer quel est le véritable nom des paquets de rubis que vous avez installés sont. Vous pouvez le trouver en utilisant
Par exemple, mon installation de 1.9.2 est ruby 1.9.2.p180, pas de ruby 1.9.2p0. Ce sera ont besoin d'être changé Frederics de commande en tant que bien.
Donc, pour moi, de Frédéric de commande est devenu pour la fixation de la rvm rubis pour 1.8.7 et 1.9.2, respectivement:
ci-dessous par: http://lightyearsoftware.com/2011/02/mysql-5-5-on-mac-os-x/
Mise À Jour En Juillet 2012:
Un changement dans OS X 10.8 rend facile la méthode ci-dessus est moins élégant. Si vous définissez cette variable, chaque fois que vous exécutez un setuid ou setgid programme, vous obtenez ce message d'avertissement sur stderr:
Développeurs Ruby à l'aide de Phusion Passenger Autonome verrez ce message s'affiche dans la console toutes les cinq secondes. Il devient vraiment énervant, très rapide.
J'ai déposé un bug avec Apple. C'est aussi à OpenRadar.
Dans l'intervalle, il y a une troisième façon de résoudre le client bibliothèque problème de chemin d'accès qui ne nécessite pas de réglage DYLD_LIBRARY_PATH (travail autour de cette 10.8 question) ou de piratage .organisez les fichiers avec install_name_tool:
La mienne était dans un emplacement différent, j'ai eu à utiliser:
J'ai été coincé sur depuis un certain temps et est venu à une solution différente.
Remarquez comment la bibliothèque manquante est version 16:
S'avère que j'avais la version 20 de la bibliothèque -
libmysqlclient.20.dylib
J'ai correctement avaient
gem 'mysql2'
dans mon Gemfile, mais ce que je devais faire était de désinstaller le gem,gem uninstall mysql
(j'ai eu plusieurs versions de la gemme installé) et ensuite de faire une nouvellebundle install
pour obtenir juste la version que j'ai besoin de cette bibliothèque.Après qu'il a cherché - et trouvé - la version correcte de ce lib.
Voici ce que je fais (similaire à d'autres)
Mis à jour mysql vers la dernière version et réinstaller mysql2 gem fonctionne pour moi
brew upgrade mysql
gem uninstall mysql2
gem install mysql2
BTW: Ma version de MySQL est 5.7.18, mysql2 gem version 0.4.5