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

时间:2009-08-26 03:42:22

标签: mysql ruby-on-rails rake

将我的rails应用程序移动到新服务器上,并且必须安装一些gem依赖项。但是,安装mysql gem之后,每当我尝试运行涉及mysql数据库的rake命令时,我都会收到错误,未初始化的常量MysqlCompat :: MysqlRes。当我需要mms2r gem时,我似乎只得到这个错误。有没有人听说过这个?我正在运行mysql 2.8.1 gem。

25 个答案:

答案 0 :(得分:47)

在我的Mac OS X 10.6上我这样做是为了安装2.8.1 gem,它与我的MacPorts mysql5服务器完美配合:

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

答案 1 :(得分:26)

基本上问题是无法找到动态库libmysqlclient。上述解决方案可行,但您需要在重建gem或重新安装新版本的MySQL时重新应用它们。

另一种方法是将包含库的MySQL目录添加到动态加载路径中。将以下内容放在我的.bashrc文件中解决了这个问题:

export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"

答案 2 :(得分:10)

我的问题是由于我的“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

瞧!

答案 3 :(得分:5)

如果您有mysql 5.5,请按照以下步骤操作:http://geryit.com/blog/2011/01/installing-mysql-with-rails-on-mac-os-x-snow-leopard/

FTR:如果我不需要一些愚蠢的代表upvote我会赞成你的同意答案,请考虑这是我的upvote。

答案 4 :(得分:3)

是的,我看到了类似的错误消息,寻找相同的不存在的类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

由于这似乎是最近的一个发展,我没有看到任何直接的反应,我想我会分享我如何修复它。祝你好运:)

答案 5 :(得分:2)

gem install -v = 2.7.1也会修复它。

答案 6 :(得分:2)

答案 7 :(得分:2)

在将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打包系统安装了我的)
  • 你是 64位ubuntu还是32位?(我现在是32位。)

答案 8 :(得分:2)

在gem(重新)安装时设置正确的ARCHFLAGS帮助我..不需要任何符号链接:

http://joergbattermann.tumblr.com/post/181479575/fixing-the-nameerror-uninitialized-constant

答案 9 :(得分:1)

sudo gem install mysql -v 2.7 - --with-mysql-config = / usr / local / mysql / bin / mysql_config在迁移到我的新Snow Leopard笔记本电脑时也为我做了诀窍。我没有使用MacPorts来安装mysql,而是使用二进制文件,并且没有使用arch flag解决方案或符号链接。

答案 10 :(得分:1)

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

答案 11 :(得分:1)

降级(从5.9)到mysql 5.1帮助10.6运行mysql和mysql2宝石。

答案 12 :(得分:1)

sudo gem install mysql -v 2.7 应该做的伎俩...

答案 13 :(得分:1)

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

这对我有用。

答案 14 :(得分:1)

sudo apt-get install libmysqlclient15-dev

答案 15 :(得分:1)

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

答案 16 :(得分:0)

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

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

答案 17 :(得分:0)

这对我有用。我阅读了大量的帖子,发现使用系统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   安装mysql -   --with MySQL的-配置=的/ usr /本地/ MySQL的/斌/ mysql_config

答案 18 :(得分:0)

我已经尝试了以上所有内容,但也没有一个适合我。在尝试安装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

我原来的错误: 阿克流产了! 未初始化的常量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'

答案 19 :(得分:0)

如果你的Mysql版本是5.5,你应该卸载它。我刚刚发表了一篇关于在ruby中使用mysql的文章:http://geryit.com/blog/2011/01/installing-mysql-with-rails-on-mac-os-x-snow-leopard/

答案 20 :(得分:0)

在Mac OS X 10.6.4上,我必须指定架构和配置目录:

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

答案 21 :(得分:0)

从Fedora 10升级到Fedora 12之后我遇到了同样的问题。我通过卸载mysql gem并再次安装它来修复它。所以它符合MySQL的新版本。

答案 22 :(得分:0)

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

完美地为我工作:)

答案 23 :(得分:0)

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

来自mysql网站的dmg包ddone!

答案 24 :(得分:0)

sudo gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 
当拱旗和符号链接没有时,

对我也有用!谢谢!