Rails, MySQL e Snow Leopard

Ho effettuato l’aggiornamento a Snow Leopard utilizzando il disco che abbiamo ottenuto al WWDC.

Cercando di eseguire alcune delle mie app di rotaie ora mi lamento di 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 di averlo risolto una volta. 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 ancora avuto mysql per lavorare con le racchette sul leopardo delle nevi? In tal caso, qual è il tuo setup e, ancora meglio, cosa posso fare per riprodurlo?

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

  1. Scarica / installa il 64 bit MySQL 5.1.37 da mysql.com
  2. eseguire i seguenti comandi:
     aggiornamento sudo gem --system

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

Ho anche disinstallato tutte le gemme mysql che galleggiavano intorno ai miei 10,5 giorni, che potrebbero farlo se quanto sopra non funziona per te 🙂

Ribuild mysql a 64 bit o installare la versione a 64 bit è importante, ma devi anche assicurarti di build le parti native della gem mysql anche a 64 bit (questo non si applica se sei su uno dei Mac originali Intel Core Duo ).

Ecco il comando magico:

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

Dovresti impostare ARCHFLAGS come mostrato sopra ogni volta che esegui un’installazione gem con componenti nativi su Snow Leopard.

Se stai usando bundler, puoi usare “bundle config” per impostare gli argomenti di build appropriati per mysql in questo modo:

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

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 il tutorial di Hivelogic per l’installazione di Ruby e RubyGems. Il tutorial MySQL è collegato in fondo). Finalmente ho avuto la gem da installare, ma stavo ancora ottenendo

 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 il mysql.bundle (non ho idea di cosa mysql.bundle ) e tutto ha funzionato.

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

Spero che aiuti qualcuno.

Ho visto questo problema molte volte. quasi ogni volta che costruisco 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 

Ricorda che hai bisogno di mysql dev files per essere in grado di build questo gioiello.

Stavo avendo problemi a far funzionare la mia configurazione dopo aver installato Snow Leopard. Ho trovato MAMP su http://www.mamp.info e bundle Apache, PHP e MySQL. lo si installa come un’applicazione e funziona. Forse vale la pena provarlo, ed è gratuito.

maglia

Ho pensato di rispondere alla mia stessa 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 compilare da origine correggere i collegamenti:

 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ò build 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/ )

Ho proseguito come spiegato in questo post ( http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/ ), e ora tutto funziona correttamente.

Ricordarsi di cercare gli errori di battitura nel suo comando per installare il driver mysql.

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

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

  2. Creare /etc/my.cnf per puntare alla mia precedente directory di dati MySQL (come descritto qui ) ed eseguire

    sudo mysql_upgrade .

  3. Apri IRB e reinstalla tutte le mie gemme usando (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. Ho disinstallato le gemme MySQL che avevo installato.

  5. Gemma MySQL installato con

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

Con quello, tutto sembra funzionare fino ad ora. * legno bussato *

Nel caso in cui preferisci la preparazione casalinga, invece di installare MySQL manualmente.

Disinstallare la gem mysql esistente (se presente):

  sudo gem uninstall mysql 

Individua il file “mysql_config”:

  find /usr -name 'mysql_config' 

Reinstallare mysql gem:

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

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

Ian Selby grazie mille ma ho dovuto rimuovere il sudo da davanti a sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Stavo installando su un gemset e sto usando rvm che penso ti chieda di non usare la parola chiave sudo. Molte grazie.

L’ho risolto in questo modo:

  1. dopo l’installazione del file dmg di mysql
  2. bundle config build.mysql –with-mysql-config = / usr / local / mysql / bin // mysql_config
  3. env ARCHFLAGS = “- arch x86_64”
  4. installazione bundle

Avendo avuto una pausa da Rails per diversi anni, ho appena trascorso un po ‘di tempo a configurare il 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.

Funzionerà a partire dal 21 agosto 2011, usando 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. Installa 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. Installa 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. Installa una versione di Ruby (ad es. 1.9.2) in rvm, le istruzioni di utilizzo di base sono qui .

     user$ rvm install 1.9.2 user$ rvm use 1.9.2 
  4. Creare un gemset per il ruby 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. Scarica e installa il pacchetto MySQL 5.5.x, l’elemento di avvio e il pannello delle preferenze . 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 corretto nome della directory MySQL) e modifica mysql.server (con i privilegi di root). Attorno alla riga 46 localizza le linee che leggono:

     basedir= datadir= 

    e cambiateli per leggere (inserendo il nome corretto della directory MySQL):

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

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

    Per abilitare i binari 3 ad usare mysql, installa mysql2 gem (vedi il prossimo passo). Innanzitutto, è necessario impostare DYLD_LIBRARY_PATH per includere la directory della libreria MySQL. Per fare ciò, modifica il tuo ~ / .bash_profile nella tua cartella home e includi quanto segue (inserendo il nome corretto della directory MySQL):

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

    Senza l’inclusione della directory nel DYLD_LIBRARY_PATH, verrebbe visualizzato un messaggio relativo alla mancata ricerca della libreria e il server interromperebbe l’operazione.

  7. Installa la gem mysql2 . (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. Crea un’app per rails e il suo database corrispondente (appname_development).

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

  10. Aggiungi 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. avviare l’app e controllare “Informazioni sull’ambiente dell’applicazione”. Tutto dovrebbe funzionare correttamente.

Le istruzioni per l’impostazione di ARCHFLAGS e il passaggio di –mysql-config = … non sembrano essere sufficienti per risolvere questo problema 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 lo ha risolto per me.

Ho provato l’archflag a ingannare molte volte con lievi variazioni ma non ha mai funzionato per me.

Ciò che alla fine ha funzionato è stato il passaggio alla versione di ruby e gem installata con leopardo delle nevi.

Avevo costruito e installato la mia versione che ha funzionato per me sotto ogni aspetto, tranne questa. Dal momento che tutto il resto sembra funzionare bene, non posso fare a meno di supporre che il plugin mysql abbia 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.

Ho ribattezzato il programma mysql_config da $ MYSQL_HOME / bin con 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 gem fallisce. Dopo aver rinominato il programma mysql_config, il seguente comando ha funzionato correttamente e ha installato la gem:

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

Se si installa mysql gem 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, nessuno dei precedenti ha funzionato

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