未初始化的常量MysqlCompat :: MysqlRes(使用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服务器完美配合:

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

事实certificate,这个阶级不应该存在; 错误消息是由最新的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解决方案或符号链接。

我在这里尝试了其他一切,但仍然遇到了问题。 从MySQL 5.5降级到5.1为我修复了它。 (Mac OS X 10.6.5)

降级(从5.9)到mysql 5.1帮助10.6 …运行mysql和mysql2gem。

mysql和mysql2 gems都可以在ruby 1.9.2上运行,只需更新ruby并安装你需要的gem。

 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 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

对我来说很完美:)

在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/

这对我有用。 我阅读了大量的post,发现使用系统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

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

来自mysql网站的dmg包ddone!

 sudo gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 

当拱旗和符号链接没有时,我也为我工作! 谢谢!!

mysql依赖关系如何与mms2r相关? 我是mms2r的作者,顺便说一句。

mms2r gemspec https://github.com/monde/mms2r/blob/master/mms2r.gemspec没有列出mysql依赖项。