ha spostato una mia app su un nuovo server e ha dovuto installare alcune dipendenze gem. Tuttavia, dopo aver installato mysql gem, ottengo l'errore, costante non inizializzata MysqlCompat :: MysqlRes, ogni volta che provo a eseguire un comando rake che coinvolge il database mysql. Sembra che ottengo questo errore solo quando richiedo la gemma mms2r. Qualcuno ha mai sentito parlare di questo? Sto usando mysql 2.8.1 gem.costante non inizializzata MysqlCompat :: MysqlRes (utilizzando mms2r gem)
risposta
sul mio Mac OS X 10.6 ho fatto questo per installare la 2.8.1 gemma, che ha funzionato perfettamente con i miei MacPorts mysql5-server:
sudo env ARCHFLAGS="-arch x86_64" gem install mysql
Ha funzionato perfettamente per me. –
Quando si lavora con rvm, questa linea ha funzionato senza il sudo nella parte anteriore. –
@KyleHeironimus - cosa intendi con "quando lavori con rvm"? Ho rvm installato, ma quando eseguo il comando senza 'sudo', ottengo" Non hai permessi di scrittura ... ". Che cosa devo fare in modo diverso per farlo funzionare "con rvm"? (Scusate, sono molto nuovo a questo.) – callum
Sì, ho visto un messaggio di errore simile, cercando la stessa classe di MysqlCompat inesistente :: MysqlRes
Come si è visto, che la classe non dovrebbe esistere; il messaggio di errore è causato da un problema con l'ultimo driver Mysql. mysql-2.8.1 cercava le mie librerie in una directory chiamata con un livello extra di "mysql" alla fine. Ad esempio, le mie librerie (sotto MacOS X 10.5.8), sono in/usr/local/mysql/lib, ma la libreria mysql.bundle cerca le librerie MySQL su/usr/local/mysql/lib/mysql ... che è sbagliato.
L'ho trovato abbastanza facile da risolvere, creando un collegamento simbolico in/usr/local/mysql/lib chiamato 'mysql', che punta a '.'
Così quando le librerie sono referenziate a quella profondità extra, vengono trovate e funzionano. Questo è decisamente un hack; Sono sicuro che ci sono modi più appropriati per risolvere questo problema. Ho solo bisogno che funzioni per poter andare avanti con altre cose.
Inoltre, questo potrebbe non funzionare per voi. E 'probabile che il lavoro se il vostro errore si presenta come:
./mysql.bundle: dlopen(./mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/mysql/libmysqlclient.15.dylib (LoadError)
Referenced from: /Users/ccullen/Projects/npapp-v2/mysql-ruby-2.8.1/mysql.bundle
Reason: image not found - ./mysql.bundle
from test.rb:5
Dal momento che questo sembra essere uno sviluppo recente e non avevo visto alcuna risposta diretta ad esso, ho pensato di condividere come ho riparato. Buona fortuna :)
Impostazione dei ARCHFLAGS corrette su di gemma (ri) installazione me .. ha aiutato senza alcun link simbolici richiesti:
http://joergbattermann.tumblr.com/post/181479575/fixing-the-nameerror-uninitialized-constant
Questo collegamento è danneggiato. – gdelfino
Ho provato tutto quanto sopra e nessuno di loro lavoro per me. Quando si tenta di installare MySQL versione 2.7, ottengo l'errore:
sudo gem install -v=2.7.1 mysql -- --with-mysql-dir=/usr/local/mysql-5.1.39-osx10.5-powerpc/bin/mysql_config
ERROR: could not find gem mysql locally or in a repository
F107PHD:stepgreen.org tdillahu$ sudo gem install -v=2.7 mysql -- --with-mysql-dir=/usr/local/mysql-5.1.39-osx10.5-powerpc/bin/mysql_config
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb --with-mysql-dir=/usr/local/mysql-5.1.39-osx10.5-powerpc/bin/mysql_config
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... no
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
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
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=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
--with-mysql-config
--without-mysql-config
--with-mysql-dir
--with-mysql-include
--without-mysql-include=${mysql-dir}/include
--with-mysql-lib
--without-mysql-lib=${mysql-dir}/lib
--with-mysqlclientlib
--without-mysqlclientlib
--with-mlib
--without-mlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-zlib
--without-zlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-socketlib
--without-socketlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-nsllib
--without-nsllib
--with-mysqlclientlib
--without-mysqlclientlib
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/mysql-2.7/gem_make.out
mio errore originale: Ake interrotta! non inizializzati costanti MysqlCompat :: MysqlRes /vendor/rails/activesupport/lib/active_support/dependencies.rb:440:in load_missing_constant' /vendor/rails/activesupport/lib/active_support/dependencies.rb:80:in
const_missing'
Per aggirare questo problema ho dovuto usare (--with-mysql-config = e non --with-mysql-dir): sudo gem installa mysql - --with-mysql-config =/usr/local/mysql-5.0.86-osx10.5-x86/bin/mysql_config. –
Va bene se il tuo mysql è installato in/usr/local/ma dove trovi mysql_config se mysql è stato installato dal gestore pacchetti? – daf
sudo gem install mysql-v 2.7 dovrebbe fare il trucco ...
Per OS X, questo (2.7) dovrebbe funzionare; 2.7.1 non esiste per OS X – davetron5000
ho avuto lo stesso problema dopo l'aggiornamento da Fedora 10 a Fedora 12. I riparato semplicemente disinstallando mysql gem e reinstallandolo di nuovo. Quindi è conforme alla nuova versione di MySQL.
sudo gem install mysql -v 2.7 - --with-mysql-config =/usr/local/mysql/bin/mysql_config
ha funzionato perfettamente per me :)
sudo gem install mysql - v 2.7 - --withwith-mysql-config =/usr/local/mysql/bin/mysql_config ha fatto anche il trucco per me durante la migrazione sul mio nuovo laptop Snow Leopard. Non ho usato MacPorts per installare mysql, ma piuttosto il binario, e non ho avuto fortuna con le soluzioni di flag di arco o collegamenti simbolici.
sudo gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
ha funzionato anche per me quando flag arco e collegamenti simbolici non ha funzionato! GRAZIE!!
sudo env ARCHFLAGS="-arch x86_64" gem install mysql
pacchetto Dmg dal sito mysql un ddone!
Questo problema è apparso con me, dopo aver aggiornato Ubuntu dal 9.10 al 10.04.
Sembra essere un problema con la gemma mysql.
Sintomi: Qualsiasi uso di ActiveRecord che richiede una connessione a MySQL produce una traccia dello stack provenienti da "non inizializzato costante MysqlCompat :: MysqlRes"
ho provato un "aggiornamento mysql gioiello" e ha scoperto che non ho potuto costruire estensioni native perché il compilatore non riesce a trovare la libreria mysql_client. Quella libreria (libmysqlclient.so.16) si trova in/usr/lib.
Fix per Ubuntu 10.04:
Come root, ho fatto questi:
apt-get install libmysqlclient-dev
gem install mysql
ho notato che diverse persone stanno cercando le cose qui e mi chiedo se non stiamo localizzare la radice causa.
Le variabili che la gente ha bisogno di chiarire nelle loro risposte:
- versione del sistema operativo - quale versione di quello che stai usando?
- dove e come hai installato mysql? - le persone qui sembrano aver installato il loro mysql dal sorgente in/usr/local (ho installato il mio tramite il sistema di confezionamento ubuntu)
- sei su un ubuntu 64 bit o 32 bit? (Sono attualmente in 32 bit.)
Sto avendo lo stesso problema su Ubuntu 12.10. La tua soluzione non è stata di grande aiuto ... – confiq
con MySQL gemma (2.8.1) mi è stato sempre
uninitialized constant MysqlCompat::MysqlRes
Utilizzando -v 2.7 farlo funzionare perfettamente e per chi ha usato per Homebrew installa mysql
sudo gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/Cellar/mysql/5.1.48/bin/mysql_config
Nota che è possibile modificare la versione di mysql se necessario.
Su Mac OS X 10.6.4, ho dovuto specificare l'architettura e config:
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Il mio problema era dovuto alle mie "mysql" essere un'installazione a 32 bit, mentre ruby era 64 e 32 bit.Verificare con questi comandi
file `which mysql`
file `which ruby`
Entrambi dovrebbero corrispondere Mach-O a 64 bit x86_64 eseguibile o Mach-O a 64 bit i386 eseguibile. Ho installato un mysql a 64 bit, quindi
export ARCHFLAGS="-arch x86_64" ; sudo gem install --no-rdoc --no-ri mysql -v 2.7 -- --with-mysql-dir=/usr/local --with-mysql-config=/usr/local/mysql/bin/mysql_config
e voilà!
Questo è stato il punto critico per me. MySQL, Ruby e la gemma mysql/ruby devono essere tutti a 64 bit. –
gem uninstall mysql
gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
ldconfig /usr/local/mysql/lib/mysql
RAILS_ENV=production rake db:migrate --trace
Questo ha funzionato per me.
comando ldconfig non trovato, questo è per mac? per ubuntu? per Windows? per un tostapane? –
sudo apt-get install libmysqlclient15-dev
Ho provato tutto il resto qui, ma ho ancora il problema. Il downgrade da MySQL 5.5 a 5.1 lo ha risolto per me. (Mac OS X 10.6.5)
Se la versione di MySQL è 5.5, disinstallarla. Ho appena lasciato un articolo su come utilizzare MySQL con rubino: http://geryit.com/blog/2011/01/installing-mysql-with-rails-on-mac-os-x-snow-leopard/
Se avete mysql 5.5 segui questo: http://geryit.com/blog/2011/01/installing-mysql-with-rails-on-mac-os-x-snow-leopard/
FTR: Se non ho bisogno di qualche stupido rep upvote avrei upvoted la risposta identitcal, considera questo il mio upvote.
qui avete la vostra reputazione LOL –
Questo è ciò che ha funzionato per me. Ho letto un sacco di post e ho scoperto che l'installazione di ruby del sistema causava un problema di incompatibilità:
- non utilizzare l'installazione di ruby predefinita! installa ruby con macports
- non utilizzare installazione rubygems predefinita! installare rb-rubygems con macports
- usare MySQL 5.1 (non 5,5) - installato dal mysql.com Mac .dmg 4.
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Downgrade (da 5,9) per MySQL 5.1 ha aiutato a 10.6. .. eseguendo entrambe le gemme mysql e mysql2.
Fondamentalmente il problema è la libreria dinamica libmysqlclient non può essere trovata. Le soluzioni di cui sopra funzioneranno, ma è necessario riapplicarle ogni volta che si ricostruisce la gemma o quando si installa una nuova versione di MySQL.
Un approccio alternativo consiste nell'aggiungere la directory MySQL che contiene la libreria al percorso di carico dinamico. Mettere il seguente nel mio file .bashrc ha risolto il problema:
export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
Questo ha funzionato per me ... OSX 10.7.3 per mysql gem 2.8.1 –
grazie, ha funzionato! – mkk
Se esporti questo in 'osx 10.8.2' e poi in seguito sudo, ricevi un avvertimento come" Variabili d'ambiente DYLD_ ignorate "ma [è solo un avvertimento] (https://discussions.apple.com/thread/ 4143805? start = 0 & Tinizio = 0) –
MySQL e mysql2 gemme lavorano entrambi su Ruby 1.9.2 solo aggiornare rubino e installare la gemma è necessario.
In che modo la dipendenza mysql è correlata a mms2r? Sono l'autore di mms2r, btw.
mms2r gemspec https://github.com/monde/mms2r/blob/master/mms2r.gemspec non elenca una dipendenza mysql.
- 1. NameError: costante non inizializzata Gem :: SourceIndex
- 2. Costante non inizializzata Iconv
- 3. NameError: non inizializzata costante Faker ::
- 4. Costante non inizializzata AssetSync
- 5. non inizializzata costante Psych :: syck su gem install
- 6. Errore Sidekiq Costante non inizializzata
- 7. costante non inizializzata ActionDispatch :: Session :: EncryptedCookieStore (NameError)
- 8. Errore ActiveAdmin costante non inizializzata ActiveAdmin :: Dashboards
- 9. rastrellato costante non inizializzata "Computer"
- 10. Rails 3.1, graffetta, s3 - costante non inizializzata AWS :: S3 :: Base
- 11. Rails 3.2, RSpec, Factory Girl: NameError: costante non inizializzata Factory
- 12. Guardia Dare "costante non inizializzata Ascolta :: Turnstile (NameError)" Errore
- 13. Authlogic OpenID: non inizializzata OpenIdAuthentication costante :: InvalidOpenId
- 14. ERRORE:: costante non inizializzata Airbrake (NameError)
- 15. costante inizializzata ritardato :: Lavoro
- 16. : costante già inizializzata PDF
- 17. costante inizializzata ActiveRecord (NameError)
- 18. Errore Homebrew OSX: costante non inizializzata MACOS
- 19. Errore MiniTest: "NameError: costante non inizializzata"
- 20. Errore di instradamento costante non inizializzata Utenti
- 21. NameError (costante non inizializzata ActionDispatch :: ExceptionWrapper):
- 22. Errore di routing - costante non inizializzata
- 23. Costante non inizializzata MyClass (NameError) in Ruby
- 24. Rails 3 Azione Mailer non inizializzata costante
- 25. ActionController :: RoutingError: non inizializzata costante MicropostsController
- 26. costante non inizializzata Rails :: Generators (NameError)
- 27. Costante non inizializzata ActionDispatch :: Routing :: Routes (NameError)
- 28. Impossibile trovare gem in irb: "NameError: Gemma costante non inizializzata da (irb)"
- 29. Perché gibbon lancia 'costante non inizializzata Gibbon :: API (NameError)'
- 30. Capybara 2.1 Errore costante non inizializzata Rails (NameError)
Questo problema riguarda anche altre gemme - fortunatamente la correzione di Markus qui sotto si applica a tutti – mikeh