簡體   English   中英

未初始化的常量MysqlCompat :: MysqlRes(使用mms2r gem)

[英]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? - 這里的人似乎已經從/ usr / local下安裝了他們的mysql(我通過ubuntu打包系統安裝了我的mysql)
  • 你是64位ubuntu還是32位? (我現在32位。)

使用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會導致不兼容問題:

  1. 不要使用默認的ruby安裝! 用macports安裝ruby
  2. 不要使用默認的rubygems安裝! 用macports安裝rb-rubygems
  3. 使用mysql 5.1(不是5.5) - 從mysql.com mac .dmg安裝
  4. 4。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM