web-dev-qa-db-ger.com

Schienen, MySQL und Snow Leopard

Ich habe ein Upgrade auf Snow Leopard mit der bei der WWDC erhältlichen Disc durchgeführt.

Der Versuch, einige meiner Rails-Apps auszuführen, beschwert sich nun über SQL

    (in /Users/coneybeare/Projects/Ambiance/ambiance-server)
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
Importing all sounds in /Users/coneybeare/Projects/Ambiance/ambiance-sounds/Import 32/Compressed/

 -- AdirondackPeepers.caf
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
dlopen(/opt/local/lib/Ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/libmysqlclient.16.dylib
  Referenced from: /opt/local/lib/Ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle
  Reason: image not found - /opt/local/lib/Ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle

(See full trace by running task with --trace)

Ich hätte schwören können, dass ich das schon einmal repariert habe. Das Problem ist, dass

Sudo gem install mysql

funktioniert nicht und gibt den Fehler:

 Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.

/opt/local/bin/Ruby extconf.rb install mysql
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no


Gem files will remain installed in /opt/local/lib/Ruby/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /opt/local/lib/Ruby/gems/1.8/gems/mysql-2.7/gem_make.out

Hat schon jemand mysql dazu gebracht mit Rails am Schneeleoparden zu arbeiten? Wenn ja, wie ist Ihr Setup und noch besser, was kann ich tun, um es zu reproduzieren?

67
coneybeare

Ich habe gerade den gleichen Schmerz durchgemacht ... hier ist was für mich gearbeitet hat:

  1. Laden Sie das 64-Bit-MySQL 5.1.37 von mysql.com herunter bzw. installieren Sie es
  2. führen Sie die folgenden Befehle aus:
 Sudo Gem Update - System 

 Sudo env ARCHFLAGS = "- Arch x86_64" gem installieren mysql - --with-mysql-config =/usr/local/mysql/bin/mysql_config 

Ich habe auch alle Mysql-Edelsteine ​​deinstalliert, die in den 10.5 Tagen herumgetrieben wurden. Dies könnte der Fall sein, wenn das oben genannte Problem für Sie nicht funktioniert :)

108
Ian Selby

Das Wiederherstellen von mysql als 64-Bit oder das Installieren der 64-Bit-Version ist wichtig, aber Sie müssen auch sicherstellen, dass Sie die systemeigenen Teile des mysql-Gem als 64-Bit erstellen. Dies gilt nicht, wenn Sie sich auf einem der ursprünglichen Intel Core Duo-Macs befinden ).

Hier ist der magische Befehl:

env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Sie sollten die ARCHFLAGS wie oben gezeigt einstellen, wenn Sie eine Juweleninstallation mit nativen Komponenten auf Snow Leopard durchführen.

10
Shebanator

Wenn Sie Bundler verwenden, können Sie "bundle config" verwenden, um die richtigen Build-Argumente für mysql wie folgt festzulegen:

bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
7
Steven Soroka

Ich habe lange damit gekämpft und endlich mit Snow Leopard gearbeitet. Am Ende habe ich Ruby, RubyGems und MySQL aus dem Quellcode installiert (siehe Hivelogic-Tutorial für die Installation von Ruby und RubyGems. Das MySQL-Tutorial ist unten verlinkt). Ich habe endlich das Juwel installiert, aber ich bekam es immer noch

dyld: lazy symbol binding failed: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
  Expected in: flat namespace

dyld: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
  Expected in: flat namespace

Trace/BPT trap

Ich löschte schließlich den mysql.bundle (ich habe keine Ahnung, wofür das gedacht ist) und alles hat funktioniert.

Sudo rm -f /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle

Hoffe das hilft jemandem.

6
Sam Soffes

Ich habe dieses Problem oft gesehen. fast Jedes Mal, wenn ich Mysql auf einem Rechner baue. Ich denke, Sie müssen Ihre mysqlconfig als Teil des Befehls gem install übergeben.

Sudo gem install mysql -- --with-mysql-config=/your/mysql/config

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--Ruby=/usr/bin/Ruby
--with-mysql-config

Denken Sie daran, dass Sie mysql dev-Dateien benötigen, um diesen Edelstein bauen zu können.

4
Ryan Oberoi

Ich hatte Probleme damit, meine Konfiguration nach der Installation des Schneeleoparden zum Laufen zu bringen. Ich habe MAMP unter http://www.mamp.info gefunden und bündelt Apache, PHP und MySQL. Sie installieren es wie eine Anwendung und es funktioniert einfach. Vielleicht einen Versuch wert, und es ist kostenlos.

mesh

2
mesh

Nachdem ich einige Jahre eine Pause von Rails verbracht hatte, war ich gerade dabei, meine Entwicklungsumgebung aufzubauen. Ich dachte, ich würde ein Tutorial erstellen, wie man die neueste Version von Rails 3, MySQL und RVM auf SnowLeopard installiert, um anderen, die in meiner Position sind, hoffentlich einige Zeit zu sparen.

Es funktioniert ab dem 21. August 2011 unter Verwendung von Rails 3.0.10, MySQL 5.5.15 und RVM 1.7.2. Es sollte mit zukünftigen Versionen von Rails 3.0.x, MySQL 5.5.x und RVM 1.7.x funktionieren.

  1. Installieren Sie XCode, falls noch nicht installiert. Ich habe 4.0.2 verwendet. Leider wurde dies nun von Apple zurückgezogen, ist jedoch möglicherweise an anderer Stelle im Internet verfügbar. Version 3.2.x kann kostenlos von Apple heruntergeladen werden, aber ich habe es nicht mit diesem Tutorial getestet, es funktioniert wahrscheinlich auch. 

  2. Installieren Sie rvm :

    user$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
    
    user$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
    
    user$ source .bash_profile
    
  3. Installieren Sie eine Version von Ruby (z. B. 1.9.2) in rvm, grundlegende Anweisungen zur Verwendung finden Sie hier .

    user$ rvm install 1.9.2
    user$ rvm use 1.9.2
    
  4. Gemset erstellen für den in Schritt 2 installierten Ruby Ruby (x ist die Versionsnummer).

    user$ rvm gemset create Rails30x
    user$ rvm [email protected]
    
  5. Installieren Sie Rails 3.0.x (x ist die Versionsnummer).

    user$  gem install Rails -v 3.0.x.
    
  6. Laden Sie das MySQL 5.5.x-Paket, das Startelement und den Einstellungsbereich herunter und installieren Sie es. . Alle drei davon sind in der DMG-Installationsdatei enthalten. Installieren Sie auch MySQL WorkBench.

    Suchen Sie nach/usr/local/mysql-version-name/support-files (fügen Sie den korrekten Namen des MySQL-Verzeichnisses ein) und bearbeiten Sie mysql.server (mit Root-Rechten). Um die Linie 46 herum finden Sie die folgenden Zeilen:

    basedir=
    datadir=
    

    und ändern Sie sie zum Lesen (indem Sie den korrekten Namen des MySQL-Verzeichnisses einfügen):

    basedir=/usr/local/mysql-version-name
    datadir=/usr/local/mysql-version-name/data
    

    Speicher die Datei. MySQL kann jetzt vom Einstellungsbereich aus gestartet werden.

    Um Rails 3 für die Verwendung von mysql zu aktivieren, installieren Sie den mysql2-gem (siehe nächster Schritt). Zuerst müssen Sie DYLD_LIBRARY_PATH so einstellen, dass das MySQL-Bibliotheksverzeichnis enthalten ist. Bearbeiten Sie dazu Ihr ~/.bash_profile in Ihrem -Ordner und fügen Sie Folgendes ein (fügen Sie den korrekten MySQL-Verzeichnisnamen ein):

    export DYLD_LIBRARY_PATH=/usr/local/mysql-version-name/lib:$DYLD_LIBRARY_PATH
    

    Ohne die Aufnahme des Verzeichnisses in DYLD_LIBRARY_PATH würde eine Meldung angezeigt, dass die Bibliothek nicht gefunden wurde Und der Server würde abbrechen.

  7. Installiere den mysql2 gem. (Stand Mai 2011 ist Version 0.2.7 die aktuellste Version mit Rails 3.0.x).

    user$ gem install mysql2 -v 0.2.7 
    
  8. Erstellen Sie eine Rails-App und die entsprechende Datenbank (appname_development).

    user$ Rails new appname
    
  9. Fügen Sie dies der Gemfile der App hinzu: gem 'mysql2', "0.2.7"

  10. Fügen Sie dies der Datenbank database.yml der App hinzu:

    development: 
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: appname_development
      pool: 5
      username: username
      password: pwd
      Host: localhost
    
  11. starten Sie die App und prüfen Sie "Informationen zur Umgebung Ihrer Anwendung". Alles sollte richtig funktionieren.

1
MikeD

Die Anweisungen zum Einstellen von ARCHFLAGS und zum Übergeben von --mysql-config = ... schienen für Snow Leopard für mich nicht ausreichend zu sein. Zusätzlich dazu habe ich hinzugefügt:

DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"

zu meinem bash Profil, und das hat es für mich gelöst.

1
bratsche

Ich hatte das gleiche Problem und hier ist was für mich gearbeitet hat.

  1. Installieren Sie Snow Leopard und das 64-Bit-MySQL-DMG.

  2. Erstellen Sie /etc/my.cnf, um auf mein vorheriges MySQL-Datenverzeichnis (wie hier ) zu verweisen, und führen Sie es aus 

    Sudo mysql_upgrade.

  3. Öffne IRB und installiere alle meine Edelsteine ​​erneut mit (via blog.costan.us/2009/07/rebuild-your-Ruby-gems-if-you-update-to.html).

    `gem list`.each_line {| line | System 'Sudo gem install # {line.split.first}'} 

  4. Deinstallierte die MySQL-Edelsteine, die ich installiert hatte.

  5. Installiertes MySQL-Juwel mit 

    Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Damit scheint alles soweit zu funktionieren. * Holz klopfen *

1
Aaron H.

Ich bin wie in diesem Beitrag erklärt vorgegangen ( http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/ ), und alles funktioniert jetzt einwandfrei.

Denken Sie daran, auf die Tippfehler in seinem Befehl zu achten, um den MySQL-Treiber zu installieren.

1
Daniel Drehmer

Ich dachte, ich würde meine eigene Frage hier beantworten. Es scheint, als ob das Problem nicht in mysql, sondern in den mysql-Ruby-Bindungen liegt. Ich habe das herausgefunden, denn als ich Querius (meine mysql gui) anschloss, konnte ich eine Verbindung herstellen.

So bauen Sie die Bindungen aus dem Quellfix auf:

cd /tmp
wget http://www.tmtm.org/en/Ruby/mysql/Ruby-mysql-0.2.6.tar.gz
tar xvfz Ruby-mysql-0.2.6.tar.gz
cd Ruby-mysql-0.2.6
./configure
make
Sudo make install

Es gibt viele Bibliotheken, die ich auf Snow Leopard als Quelle erstellen muss, und sie werden immer wieder angezeigt. MacPorts scheint für alle Bibliotheken nicht genug aktualisiert zu sein, also mache ich mich auf den Weg, es alleine zu tun. Als nächstes: freetype ( http://download.savannah.gnu.org/releases-noredirect/freetype/ )

1
coneybeare

Ich habe es so gelöst:

  1. nach der Installation der DMG-Datei von MySQL
  2. bündelkonfiguration build.mysql --with-mysql-config =/usr/local/mysql/bin // mysql_config
  3. env ARCHFLAGS = "- Bogen x86_64"
  4. bundle installieren
1
surajit dey

Ian Selby vielen Dank, aber ich musste die Sudo vor Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config entfernen.

Ich habe auf einem Gemset installiert und verwende rvm, von dem ich denke, dass Sie das Sudo-Schlüsselwort nicht verwenden sollen. Danke vielmals.

1
Ricky McMillen

Falls Sie Home Brew bevorzugen, müssen Sie MySQL nicht manuell installieren.

Deinstallieren Sie den vorhandenen mysql gem (falls vorhanden):

 Sudo gem uninstall mysql 

Suchen Sie die Datei 'mysql_config':

 find /usr -name 'mysql_config' 

Installieren Sie den mysql gem erneut:

 Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/bin/mysql_config 

Hinweis: ersetzt /usr/local/bin/ mit dem entsprechenden mysql_config-Pfad, der in Schritt 2 gefunden wurde. Auch in meinem blog .

1
ohho

Ich habe den Trick der Archflags oft mit leichten Abweichungen ausprobiert, aber es hat nie funktioniert.

Was schließlich tat Arbeit war, war der Umstieg auf die Version von Ruby und Gem, die mit Schneeleopard installiert wurden.

Ich hatte meine eigene Version gebaut und installiert, die in jeder Hinsicht für mich funktioniert hat, außer dieser ... Da alles andere gut funktioniert, kann ich nicht raten, dass das mysql-Plugin einige funky Annahmen hat. Alles, was ich getan habe, war,/usr/bin zu wechseln, um wieder auf meinem Weg zu sein. Ich hatte Ruby in /usr/local/Ruby-1.8.7 und /usr/local/Ruby-1.9.1 installiert, um problemlos wechseln zu können. Ich dachte, ich würde es erwähnen, da die Archflags-Lösung für viele Menschen zu funktionieren scheint, aber nicht für alle.

0
Ian

dieser Artikel hat das Problem für mich gelöst :)

http://techliberty.blogspot.com/2009/12/dealing-with-rake-aborted-uninitialized.html

  • Vor Leopard

    Sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql

    • Leopard auf einer PPC Maschine:

      Sudo env ARCHFLAGS="-Arch ppc" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

    • Leopard auf einem Intel-Rechner:

      Sudo env ARCHFLAGS="-Arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

    • Snow Leopard (nur bei Intel):

      Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

0
Bijan

Ich habe das Programm mysql_config von $ MYSQL_HOME/bin in etwas anderes umbenannt, damit das Konfigurationsskript des gem-Installationsprogramms es nicht finden kann. Obwohl ich die libs-Option verwendet habe, hat das gem-Installationsprogramm immer die Kompilierungseinstellungen meiner mysql-Installation verwendet, die fette Binärdatei ist. Die standardmäßige Ruby-Installation ist jedoch nur x86_64 und daher schlägt das Kompilieren des Gems fehl. Nach dem Umbenennen des Programms mysql_config funktionierte der folgende Befehl einwandfrei und installierte den gem:

Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-dir=/usr/local/mysql
0
cmittendorf

Wenn Sie den mysql gem mit RVM installieren, müssen Sie den folgenden Code verwenden, um ihn zu installieren

Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql

Diese Methode hat für mich in Leopard Server funktioniert, keine der oben genannten Methoden

0
ganar