[英]uninitialized constant MysqlCompat::MysqlRes (using mms2r gem)
將我的rails應用程序移動到新服務器上,並且必須安裝一些gem依賴項。 但是,安裝mysql gem之后,每當我嘗試運行涉及mysql數據庫的rake命令時,我都會收到錯誤,未初始化的常量MysqlCompat :: MysqlRes。 當我需要mms2r gem時,我似乎只得到這個錯誤。 有沒有人聽說過這個? 我正在運行mysql 2.8.1 gem。
在我的Mac OS X 10.6上,我這樣做是為了安裝2.8.1 gem,它與我的MacPorts mysql5-server完美配合:
sudo env ARCHFLAGS="-arch x86_64" gem install mysql
基本上問題是無法找到動態庫libmysqlclient。 上述解決方案可行,但您需要在重建gem時或安裝新版本的MySQL時重新應用它們。
另一種方法是將包含庫的MySQL目錄添加到動態加載路徑中。 將以下內容放在我的.bashrc文件中解決了這個問題:
export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
我的問題是由於我的“mysql”是32位安裝,而ruby是64位和32位。 檢查這些命令
file `which mysql`
file `which ruby`
兩者都應匹配Mach-O 64位可執行x86_64或Mach-O 64位可執行i386。 我安裝了一個64位的mysql
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
瞧!
如果你有mysql 5.5,請關注: http : //geryit.com/blog/2011/01/installing-mysql-with-rails-on-mac-os-x-snow-leopard/
FTR:如果我不需要一些愚蠢的代表upvote我會贊成你的同意答案,請考慮這是我的upvote。
是的,我看到了類似的錯誤消息,尋找相同的不存在的類MysqlCompat :: MysqlRes
事實證明,這個階級不應該存在; 錯誤消息是由最新的Mysql驅動程序的問題引起的。 mysql-2.8.1在最后以額外級別'mysql'命名的目錄中查找我的庫。 例如,我的庫(在MacOS X 10.5.8下)位於/ usr / local / mysql / lib中,但mysql.bundle庫在/ usr / local / mysql / lib / mysql中查找MySQL庫...這是錯的。
通過在名為'mysql'的/ usr / local / mysql / lib中創建一個指向'。'的符號鏈接,我發現它很容易修復。
因此,當庫在這個額外的深度被引用時,它們被找到並且起作用。 這絕對是一個黑客; 我確信有更合適的方法來解決這個問題。 我只是需要它才能工作,所以我可以繼續其他事情。
此外,這可能對您不起作用。 如果您的錯誤如下,則可能會有效:
./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
由於這似乎是最近的發展,我沒有看到任何直接的反應,我想我會分享我如何解決它。 祝好運 :)
gem install -v = 2.7.1也會修復它。
在gem(重新)安裝時設置正確的ARCHFLAGS幫助我..不需要任何符號鏈接:
http://joergbattermann.tumblr.com/post/181479575/fixing-the-nameerror-uninitialized-constant
在將Ubuntu從9.10升級到10.04之后,我出現了這個問題。
這似乎是mysql gem的一個問題。
症狀:需要連接到mysql的ActiveRecord的任何使用都會產生來自“未初始化的常量MysqlCompat :: MysqlRes”的堆棧跟蹤
我嘗試了“gem update mysql”,發現我無法構建原生擴展,因為編譯器找不到mysql_client庫。 該庫(libmysqlclient.so.16)位於/ usr / lib中。
修復ubuntu 10.04:
作為root,我做了這些:
apt-get install libmysqlclient-dev
gem install mysql
我注意到有幾個不同的人在這里嘗試,我想知道我們是否找不到根本原因。
人們需要在答案中澄清的變量:
使用mysql gem(2.8.1)我得到了
未初始化的常量MysqlCompat :: MysqlRes
使用-v 2.7使其完美運行,並且對於那些使用Homebrew安裝mysql的人
sudo gem install mysql -v 2.7 - --with-mysql-config = / usr / local / Cellar / mysql / 5.1.48 / bin / mysql_config
請注意,如果需要,您可以更改mysql版本。
sudo gem install mysql -v 2.7應該做的訣竅......
sudo gem install mysql -v 2.7 - --with-mysql-config = / usr / local / mysql / bin / mysql_config在遷移到我的新Snow Leopard筆記本電腦時也為我做了訣竅。 我沒有使用MacPorts來安裝mysql,而是使用二進制文件,並且沒有使用arch flag解決方案或符號鏈接。
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
這對我有用。
sudo apt-get install libmysqlclient15-dev
我在這里嘗試了其他一切,但仍然遇到了問題。 從MySQL 5.5降級到5.1為我修復了它。 (Mac OS X 10.6.5)
降級(從5.9)到mysql 5.1幫助10.6運行mysql和mysql2寶石。
mysql和mysql2 gems都可以在ruby 1.9.2上運行,只需更新ruby並安裝你需要的gem。
我已經嘗試了上述所有內容,但也沒有一個適用於我。 在嘗試安裝mysql 2.7版時,我收到錯誤:
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
我的原始錯誤:ake中止了! 未初始化的常量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
rails/activesupport/lib/ load_missing_constant' /vendor/rails/activesupport/lib/active_support/dependencies.rb:80:in
dependencies.rb: load_missing_constant' /vendor/rails/activesupport/lib/active_support/dependencies.rb:80:in
const_missing'
從Fedora 10升級到Fedora 12之后我遇到了同樣的問題。我通過卸載mysql gem並再次安裝它來修復它。 所以它符合MySQL的新版本。
sudo gem install mysql -v 2.7 - --with-mysql-config = / usr / local / mysql / bin / mysql_config
為我工作完美:)
sudo gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
當拱旗和符號鏈接沒有時,我也為我工作! 謝謝!!
sudo env ARCHFLAGS="-arch x86_64" gem install mysql
來自mysql網站的dmg包ddone!
在Mac OS X 10.6.4上,我必須指定體系結構和配置目錄:
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
如果你的Mysql版本是5.5,你應該卸載它。 我剛剛發表了一篇關於在ruby中使用mysql的文章: http : //geryit.com/blog/2011/01/installing-mysql-with-rails-on-mac-os-x-snow-leopard/
這對我有用。 我閱讀了大量的帖子,發現使用系統ruby install會導致不兼容問題:
sudo env ARCHFLAGS =“ - arch x86_64”gem install mysql - --with-mysql-config = / usr / local / mysql / bin / mysql_config
mysql依賴關系如何與mms2r相關? 我是mms2r的作者,順便說一句。
mms2r gemspec https://github.com/monde/mms2r/blob/master/mms2r.gemspec沒有列出mysql依賴項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.