2011-02-23 79 views
0

我想让mysql gem工作......而它只是不想。每次我做一个耙分贝:迁移,我得到MySQL Gem失败:Snow Leopard上的MysqlCompat :: MysqlRes

uninitialized constant MysqlCompat::MysqlRes 

我mysql安装从该磁盘映像:mysql-5.5.9-osx10.6-x86_64.dmg

我已经运行的创业板安装与臭名昭著 ARCHFLAGS设置:

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

而且我使用的红宝石版本是雪豹默认:

[~/sites/testdb]$ file `which mysql` 
/usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64 
[~/sites/testdb]$ file `which ruby` 
/usr/bin/ruby: Mach-O universal binary with 3 architectures 
/usr/bin/ruby (for architecture x86_64): Mach-O 64-bit executable x86_64 
/usr/bin/ruby (for architecture i386): Mach-O executable i386 
/usr/bin/ruby (for architecture ppc7400): Mach-O executable ppc 

我的database.yml很简单:

development: 
    adapter: mysql 
    host: 127.0.0.1 
    database: testdb 
    username: root 
    password: 

任何帮助,将不胜感激。

回答

1

您可以轻松解决您的问题。

如果不使用RVM:如果你使用RVM

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql-2.8.1/lib/mysql_api.bundleruby 

install_name_tool -change libmysqlclient.16.dylib usr/local/mysql/lib/libmysqlclient.16.dylib [YOUR_GEMSET_PATH]/gems/mysql-2.8.1/lib/mysql_api.bundle 
0

你可以尝试使用可能不会遭受同样问题的mysql2宝石。

我发现它往往是好了很多使用rubymysqlMacPortsbrew保持在同一页上的一切,而不是好惹的系统红宝石。

OS X附带的MySQL版本可能与您安装的版本不匹配,或者gem安装程序对使用哪个配置程序感到困惑。确保mysql_config正在返回正确的路径。

1

我的博客上讲述过去的一周:MySQL 5.5 on Mac OS X

我使用install_name_tool的替代解决方案是在你的shell启动文件中设置DYLD_LIBRARY_PATH。这样做的好处是你只做一次,而如果你使用install_name_tool,你会重复每次重新安装或升级宝石。

mysql2 gem将有一个稍微不同的错误消息相同的问题。问题是如何构建libmysqlclient库。它不包含完整路径,因此与它链接的任何内容都无法在运行时找到它。

0

我遇到了同样的错误。不过,在我的机器上,当我仍然在我的机器上安装了mysql 5.1时,mysql gen就建立了。现在,在升级到MySQL 5.5之后,由原始版本/usr/local/mysql/lib/libmysqlclient.16.dylib引用的dyld文件不再存在并且被替换为文件/usr/local/mysql/lib/libmysqlclient.18.dylib

完全重建的MySQL宝石固定的东西,即

gem uninstall mysql 
gem install mysql 
相关问题