将我的rails应用程序移动到新服务器上,并且必须安装一些gem依赖项。但是,安装mysql gem之后,每当我尝试运行涉及mysql数据库的rake命令时,我都会收到错误,未初始化的常量MysqlCompat :: MysqlRes。当我需要mms2r gem时,我似乎只得到这个错误。有没有人听说过这个?我正在运行mysql 2.8.1 gem。
答案 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
我注意到有几个不同的人在这里尝试,我想知道我们是否找不到根本原因。
人们需要在答案中澄清的变量:
答案 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会导致不兼容问题:
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
当拱旗和符号链接没有时,对我也有用!谢谢!