MySQL Gem失败:Snow Leopard上的MysqlCompat :: MysqlRes

时间:2011-02-23 16:03:49

标签: mysql ruby-on-rails gem

我试图让mysql gem工作......它只是不想。每次我做rake db:migrate,我都会

uninitialized constant MysqlCompat::MysqlRes

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

我使用臭名昭着的 archflags设置运行gem install:

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

我正在使用的ruby版本是Snow Leopard的默认版本:

[~/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: 

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

您可以轻松解决问题。

如果你不使用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

如果您使用rvm:

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

答案 1 :(得分:1)

我上周在博客上写道:MySQL 5.5 on Mac OS X

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

mysql2 gem会出现同样的问题,但错误消息略有不同。问题是如何构建libmysqlclient库。它不包含完整路径,因此任何与其链接的内容都无法在运行时找到它。

答案 2 :(得分:0)

你可以尝试使用mysql2宝石,它可能不会遇到同样的问题。

我发现使用MacPortsbrew中的rubymysql将所有内容保存在同一页面并且不会弄乱系统通常要好得多红宝石。

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

答案 3 :(得分:0)

我遇到了同样的错误。但是,在我的机器上,mysql gen是在我的机器上还有mysql 5.1时构建的。现在,在升级到MySQL 5.5之后,原始版本/usr/local/mysql/lib/libmysqlclient.16.dylib引用的dyld文件不再存在,并被文件/usr/local/mysql/lib/libmysqlclient.18.dylib替换。

完全重建mysql gem固定的东西,即

gem uninstall mysql
gem install mysql