2009-06-13 13 views
67

Ho effettuato l'aggiornamento a Snow Leopard utilizzando il disco che abbiamo ottenuto al WWDC.Rails, MySQL e Snow Leopard

Cercando di eseguire alcune delle mie applicazioni Rails ora si lamenta 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) 

avrei giurato Ho fissato questo una volta prima. Il problema è che

sudo gem install mysql 

non funziona e dà l'errore:

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 

Qualcuno ha mysql avuto modo di lavorare con le rotaie su leopardo delle nevi ancora? In tal caso, qual è il tuo setup e, ancora meglio, cosa posso fare per riprodurlo?

risposta

108

Ho appena passato attraverso lo stesso dolore ... ecco cosa ha funzionato per me:

  1. scaricare/installare il 64-bit MySQL 5.1.37 da mysql.com
  2. eseguire i seguenti comandi:
 

    sudo gem update --system 

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

ho anche disinstallato tutte le gemme di MySQL che sono stati galleggianti intorno dai miei 10,5 giorni, che possono farlo se quanto sopra non funziona per voi :)

+0

Grazie; mi hai appena salvato il resto dei miei capelli! –

+0

Grazie mille! – gdelfino

+0

Roba buona.Questo mi ha bloccato qualcosa di terribile. – nickmjones

4

Ho visto questo problema molte volte. quasi ogni volta che creo mysql su una macchina. Penso che devi passare mysqlconfig come parte del comando di installazione di gem.

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 

ricordare che è necessario file dev mysql per essere in grado di costruire questo gioiello.

1

Ho pensato di rispondere alla mia domanda qui. Sembra che il problema non sia in mysql, ma nei collegamenti mysql ruby. L'ho capito perché quando ho collegato Querius (il mio mysql gui), era in grado di connettersi.

Ecco come costruire dai sorgenti montaggio degli attacchi:

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 

Ci sono un sacco di librerie che dovrà costruire dai sorgenti su Snow Leopard e continuano a spuntare. MacPorts non sembra essere aggiornato abbastanza per tutte le librerie, quindi sono libero di farlo da solo. Next up: freetype (http://download.savannah.gnu.org/releases-noredirect/freetype/)

6

Ho combattuto con questo per molto tempo e finalmente ho lavorato su Snow Leopard. Ho finito per installare Ruby, RubyGems e MySQL dal sorgente (vedi Hivelogic tutorial per l'installazione di Ruby e RubyGems. Il tutorial MySQL è collegato in fondo). Finalmente ho avuto la gemma da installare, ma ero ancora ricevendo

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 

ho finalmente cancellato la mysql.bundle (non ho idea di che cosa questo è per) e tutto ha funzionato.

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

La speranza che aiuta qualcuno.

+1

Uomo, grazie per l'avviso su mysql.bundle. Questo mi ha bruciato su una delle mie macchine. – Scott

+0

Questo mi ha aiutato, grazie amico! –

+1

"Ho finalmente cancellato il mysql.bundle (non ho idea di cosa serva) e tutto ha funzionato." Con la stessa logica si potrebbe provare a cancellare quel grande file "mach_kernel" o quelle directory "tmp". Eliminare le cose dal sistema che è stato installato da Apple non è una buona idea. Ricerca per capire perché è lì prima, quindi decidere se è OK per eliminare. –

10

Ricostruire mysql come 64 bit o installare la versione a 64 bit è importante, ma è anche necessario assicurarsi di costruire anche le parti native della gemma mysql a 64 bit (questo non si applica se si è su uno degli originali Mac Intel Core Duo).

Ecco il comando magia:

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

È necessario impostare i ARCHFLAGS come indicato sopra ogni volta che si installa una gemma con componenti nativi su Snow Leopard.

+0

Possiedo uno dei Mac Core Duo originali (Mac Book 1 gen), quindi nessuna CPU a 64 bit. Come modificherai il tuo comando per questa architettura? –

+0

Per Macbook a 32 bit o Macbook Pro, installare la versione x86 regolare di MySQL e utilizzare questo comando: sudo env ARCHFLAGS = "- arch i386" gem installazione mysql - --with-mysql-config =/usr/local/mysql/bin/mysql_config –

+0

Sì, se hai i macbook di 1 gen, dovresti lasciare tutte queste cose prima del comando gem. – Shebanator

1

Ho avuto questo stesso problema ed ecco cosa ha funzionato per me.

  1. Installare Snow Leopard e il MySQL DMG a 64 bit.

  2. Creare /etc/my.cnf per puntare al mio precedente directory dei dati di MySQL (come descritto here) ed eseguire

    sudo mysql_upgrade.

  3. IRB aperto e reinstallare tutte le mie gemme utilizzando (tramite blog.costan.us/2009/07/rebuild-your-ruby-gems-if-you-update-to.html).

    `gem list`.each_line {| line | sistema 'sudo gem install # {line.split.first}'}

  4. Disinstallato le gemme MySQL che avevo installato.

  5. Installato gioiello MySQL con

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

Con questo, tutto sembra funzionare finora. * knock wood *

+0

Questo è su un MacBook Pro (pre-unibody) Core 2 Duo 2.4 Ghz con 4 GB o RAM –

+0

Hai avviato a 64 o 32 bit? – Jaryl

2

Ho riscontrato problemi con il funzionamento della configurazione dopo aver installato Snow Leopard. Ho trovato MAMP a http://www.mamp.info e raggruppa Apache, PHP e MySQL. lo si installa come un'applicazione e funziona. Forse vale la pena provarlo, ed è gratuito.

rete a maglia fitta

0

Ho provato il trucco archflags molte volte con lievi variazioni, ma non ha mai funzionato per me.

Ciò che finalmente ha fatto il lavoro è stato il passaggio alla versione di rubino e gemma installata con leopardo delle nevi.

Avevo costruito e installato la mia versione che ha funzionato per me sotto ogni aspetto tranne questa. Dato che tutto il resto sembra funzionare bene, non posso fare a meno di indovinare che il plugin mysql ha alcune ipotesi funky in esso. Comunque, tutto ciò che ho fatto è stato cambiare/usr/bin per essere di nuovo il primo nel mio percorso. Avevo installato ruby ​​in /usr/local/ruby-1.8.7 e /usr/local/ruby-1.9.1 per poter passare facilmente. Ho pensato di dirlo perché la soluzione archflags sembra funzionare per molte persone, ma non del tutto.

0

Ho rinominato il programma mysql_config da $ MYSQL_HOME/bin in qualcos'altro, in modo che lo script di configurazione dal programma di installazione gem non sia in grado di trovarlo. Anche se stavo usando l'opzione libs, il programma di installazione gem usava sempre le impostazioni di compilazione dalla mia installazione mysql, che è fat binary. Ma l'installazione predefinita di ruby ​​è solo x86_64 e quindi la compilazione della gemma fallisce. Dopo aver rinominato il programma mysql_config il seguente comando lavorato bene e installato la gemma:

sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-dir=/usr/local/mysql 
0

questo articolo ha risolto il problema per me :)

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

  • Prima di Leopard

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

    • Leopard su una macchina PPC:

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

    • Leopard su una macchina Intel:

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

    • Snow Leopard (solo su Intel):

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

0

Se si installa la gemma mysql con RVM è necessario utilizzare il seguente codice per installarlo

sudo env ARCHFLAGS="-arch x86_64" gem install mysql 

Questo metodo ha funzionato per me in Leopard Server, nessuna delle precedenti ha lavorato

7

Se stai usando bundler, è possibile utilizzare "config fascio" per impostare gli argomenti di compilazione corretti per mysql in questo modo:

bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config 
+0

http://gembundler.com/ – gdelfino

+0

Sì, questo potrebbe essere cambiato con bundler 1.0. Probabilmente utilizza variabili d'ambiente o qualcosa del genere ... Non ho dovuto impostarlo esplicitamente con 1.0 –

1

Le istruzioni per l'impostazione di ARCHFLAGS e il passaggio di --mysql-config = ... non sembravano essere sufficienti per risolvere questo problema per me su Snow Leopard. Oltre a ciò, ho aggiunto:

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

al mio profilo di bash, e questo l'ha risolto per me.

1

Se si preferisce la casa brew, invece di installare MySQL manualmente.

Un-installare la gemma mysql esistente (se presente):

sudo gem uninstall mysql 

Individuare il file 'mysql_config':

find /usr -name 'mysql_config' 

Reinstallare mysql gemma:

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

Nota: sostituire /usr/local/bin/ con il corrispondente mysql_config percorso trovato nel passaggio 2. Anche sul mio blog.

1

Ian Selby grazie un sacco, ma ho dovuto togliere la sudo da davanti sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

stavo installando un GemSET e sto usando rvm che credo vi chiede di non utilizzare la parola chiave sudo. Molte grazie.

1

ho risolto in questo modo:

  1. dopo l'installazione del file dmg di mysql  
  2. fascio config build.mysql --with-mysql-config =/usr/local/mysql/bin// mysql_config
  3. ARCHFLAGS env = "- arch x86_64"
  4. bundle install
1

Avere avuto una pausa dal Rails per diversi anni, ho appena trascorso un po 'di Tim e impostazione del mio ambiente di sviluppo. Quindi ho pensato di creare un tutorial su come installare l'ultima versione di Rails 3, MySQL e RVM su SnowLeopard, per sperare di salvare altri utenti qualche volta che sono nella mia posizione.

Funziona a partire dal 21 agosto 2011, utilizzando Rails 3.0.10, MySQL 5.5.15 e RVM 1.7.2. Dovrebbe funzionare con versioni future di Rails 3.0.x, MySQL 5.5.xe RVM 1.7.x.

  1. Installare XCode se non è già installato. Ho usato 4.0.2. Purtroppo questo è stato ritirato da Apple, ma potrebbe essere disponibile altrove su Internet. La versione 3.2.x è scaricabile gratuitamente da Apple, ma non l'ho testato con questo tutorial, probabilmente funziona anche.

  2. Installare 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. installare una versione di Ruby (ad esempio 1.9.2) in rvm, basic usage instructions are here.

    user$ rvm install 1.9.2 
    user$ rvm use 1.9.2 
    
  4. Create a gemset per il rubino RVM installato nel passaggio 2 (x è il numero di versione).

    user$ rvm gemset create rails30x 
    user$ rvm [email protected] 
    
  5. Installa Rails 3.0.x (x è il numero di versione).

    user$ gem install rails -v 3.0.x. 
    
  6. Download and install the MySQL 5.5.x package, the startup item, and the preferences pane. Tutti e 3 di questi sono inclusi nel file di installazione DMG. Installa anche MySQL WorkBench.

    Trova/usr/local/mysql-version-name/support-files (inserendo il nome di directory MySQL corretto) e modifica mysql.server (con privilegi di root). Intorno linea 46 individuare le linee che leggere:

    basedir= 
    datadir= 
    

    e cambiano a leggere (inserendo il corretto MySQL nome della directory):

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

    salvare il file. MySQL ora può essere avviato dal pannello delle preferenze.

    Per abilitare i binari 3 ad usare mysql, installare mysql2 gem (vedere il prossimo passo). Innanzitutto, è necessario impostare DYLD_LIBRARY_PATH per includere la directory della libreria MySQL. Per fare questo, modificare il proprio ~/.bash_profile nella vostra cartella home e comprendono quanto segue (inserendo il corretto MySQL nome della directory):

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

    Senza l'inserimento della directory nel DYLD_LIBRARY_PATH, un messaggio di non trovare apparirà la libreria e il server si interromperà.

  7. Install the mysql2 gem. (a partire da maggio 2011, la versione 0.2.7 è la versione di lavoro più recente con Rails 3.0.x).

    user$ gem install mysql2 -v 0.2.7 
    
  8. creare un'app rotaie, ed è database corrispondente (appname_development).

    user$ rails new appname 
    
  9. Aggiungi questo al Gemfile dell'app: gem 'mysql2', "0.2.7"

  10. aggiungere questo al database.yml dell'app:

    development: 
        adapter: mysql2 
        encoding: utf8 
        reconnect: false 
        database: appname_development 
        pool: 5 
        username: username 
        password: pwd 
        host: localhost 
    
  11. inizio app e controllare "A proposito di ambiente dell'applicazione". Tutto dovrebbe funzionare correttamente.

+0

Welcome to Stack Overflow. Bella guida qui. (Ho aggiornato la formattazione un po '.) –

+0

In alcuni casi, [RVM ** crea ** questo problema] (http://groups.google.com/group/mongodb-user/browse_thread/thread/528a56959682331d/fb6be57bf5f52aff?lnk = raot & pli = 1) –