【问题标题】:OSX dyld: lazy symbol binding failed: Symbol not found: _mysql_get_client_infoOSX dyld:惰性符号绑定失败:找不到符号:_mysql_get_client_info
【发布时间】:2016-04-19 16:54:51
【问题描述】:

我安装了mysql(5.6.27),目前最新的mysql版本(5.7..)。

我安装了 mysql2 gem 版本 - 0.3.14

当我尝试运行 rake db:create 时,我收到错误消息:

Karliss-Air:gostyling myuser$ rake db:create
dyld: lazy symbol binding failed: Symbol not found: _mysql_get_client_info
  Referenced from: /Users/myuser/.rvm/gems/ruby-2.1.2/extensions/x86_64-darwin-13/2.1.0-static/mysql2-0.3.14/mysql2/mysql2.bundle
  Expected in: flat namespace

dyld: Symbol not found: _mysql_get_client_info
  Referenced from: /Users/myuser/.rvm/gems/ruby-2.1.2/extensions/x86_64-darwin-13/2.1.0-static/mysql2-0.3.14/mysql2/mysql2.bundle
  Expected in: flat namespace

但奇怪的是,当我运行 nm -gU 时,它显示 dylib 在那里:

Karliss-Air:gostyling myuser$ nm -gU /usr/local/lib/libmysqlclient.18.dylib | grep _mysql_get_client_info
0000000000002ff5 T _mysql_get_client_info
Karliss-Air:gostyling myuser$ 

我尝试在安装 gem 时定义 mysql 路径

gem pristine mysql2 -v '0.3.14' -- --with-mysql-dir=/usr/local/Cellar/mysql56/5.6.27 -–with-mysql-config=/usr/local/Cellar/mysql56/5.6.27/bin/mysql_config

没用。

我真的很感谢您的帮助!

【问题讨论】:

    标签: mysql ruby-on-rails macos bash ruby-on-rails-3


    【解决方案1】:

    如果您使用的是 rvm/没有 rvm(只使用 sudo),请使用以下命令解决问题。

    rvmsudo ARCHFLAGS="-arch x86_64" gem install mysql2 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config --with-opt-lib=/usr/local/mysql/lib 
    

    其他尝试,卸载mysql2 gem,然后用sudo安装gem有时会解决。

    sudo gem uninstall mysql2
    
    sudo gem install mysql2
    

    或查看以下内容:Lazy symbol binding failed when creating ruby db

    【讨论】:

    • 我不认为这是正确的方法,但过去卸载和安装它几次对我有用
    • 使用 sudo 卸载和安装 gem 对我有用
    【解决方案2】:

    通过重新安装我的 macbook 解决了这个问题。我认为问题在于我先安装了mysql5.7,然后尝试使用mysql56。重新安装后,我立即安装了 mysql56,一切正常。

    【讨论】:

      猜你喜欢
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      相关资源
      最近更新 更多