乘客错误“库未加载”

时间:2010-11-23 08:41:12

标签: mysql ruby-on-rails passenger

从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/我会尝试改变这一点,但我不知道怎么做!?

1 个答案:

答案 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