从Passenger(使用Apache)获取此错误。不确定这意味着什么...
dlopen(/path/to/myapp/shared/bundle/ruby/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9):
Library not loaded: /usr/local/mysql/lib/libmysqlclient.16.dylib
Referenced from: /path/to/myapp/shared/bundle/ruby/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
Reason: image not found - /path/to/myapp/shared/bundle/ruby/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
安装的Ruby实际上是1.9.2,但无论出于何种原因,宝石都在这条“1.9.1”路径中......
这是否与我使用mysql2
gem而不是mysql
这一事实有关?
或者,也许它可能与第二行“未加载库”有关,看起来它可能正在尝试加载错误的libmysqlclient.16.dylib
?由于路径/usr/local/mysql
指向未运行的mysql版本。正在运行的mysql版本位于/usr/bin/
。 我会尝试改变这一点,但我不知道怎么做!?
答案 0 :(得分:3)
announcement for Ruby 1.9.2说(原文如此)
此版本为“librariry兼容版本”。 Ruby 1.9.2几乎兼容1.9.1,因此该库安装在1.9.1 direcotry中。
这就是为什么 ruby 目录被命名为“1.9.1”;这很正常。
mysql2 gem的实例是针对/usr/local/mysql/lib/libmysqlclient.16.dylib
库构建的。出于这样或那样的原因,您的系统上该库当前不能使用该路径名(MySQL已删除/移动/升级?)。
您可能需要重建 mysql2 gem并将其指向MySQL安装中的mysql_config
(或mysql_config5
)(在/usr/bin
中?):
gem install mysql2 -- --with-mysql-config=/usr/bin/mysql_config