【问题标题】:Connect to mysql from node.js app, error: "dyld: lazy symbol binding failed: Symbol not found: _mysql_init"从 node.js 应用程序连接到 mysql,错误:“dyld:惰性符号绑定失败:找不到符号:_mysql_init”
【发布时间】:2011-11-16 17:31:30
【问题描述】:

我使用 XAMPP 的 OSX 10.6.8 和 MySQL。

当我运行这个 node.js 应用程序 (app.js) 时:

var mysql = require('mysql-libmysqlclient');
var conn = mysql.createConnectionSync();
conn.connectSync('127.0.0.1', 'root', '', 'database_name');

我看到了这个输出:

Airs0urce:nodejs airs0urce$ node app.js 
dyld: lazy symbol binding failed: Symbol not found: _mysql_init
Referenced from:     /Applications/XAMPP/xamppfiles/htdocs/myproject/nodejs/node_modules/mysql-libmysqlclient/build/Release/mysql_bindings.node
Expected in: dynamic lookup

dyld: Symbol not found: _mysql_init
Referenced from: /Applications/XAMPP/xamppfiles/htdocs/myproject/nodejs/node_modules/mysql-libmysqlclient/build/Release/mysql_bindings.node
  Expected in: dynamic lookup

Trace/BPT trap

谷歌搜索后已经尝试了几种解决方案。 以这种方式从 XAMPP 目录添加了 mysql 库以包含路径:

export DYLD_LIBRARY_PATH=/Applications/XAMPP/xamppfiles/lib/mysql:$DYLD_LIBRARY_PATH

尝试使用 MacPorts 安装 mysql5-devel,但没有成功,构建失败:

Airs0urce:~ airs0urce$ sudo port install mysql5-devel
--->  Computing dependencies for mysql5-devel
--->  Building mysql5-devel
Error: Target org.macports.build returned: shell command failed (see log for details)
Log for mysql5-devel is at:     /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_databases_mysql5-devel/mysql5-devel/main.log
Error: Status 1 encountered during processing.
To report a bug, see <http://guide.macports.org/#project.tickets>

如果你想看的话有日志文件:http://dl.dropbox.com/u/1875424/main.log

【问题讨论】:

    标签: mysql node.js xampp dyld


    【解决方案1】:

    这是因为 Mac OS X Lion (10.7) 上的配置问题:lib/libmysqlclient.18.dylib(mysql 5.5 及更高版本)。

    第 1 步:

    确保在~/.profile中设置路径

    export ARCHFLAGS=-arch x86_64
    export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
    

    第 2 步:

    我使用的是 rvm,所以我使用了以下命令:

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

    解决了 Mac lion 和 mysql x86_64 上的 rails 应用程序问题。

    【讨论】:

      【解决方案2】:

      我为此花了很多时间,包括设置 DVLD 库路径并将库复制到 /usr/lib。

      sudo cp /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib

      哎呀,任何让它工作的东西。最后,我尝试清除 64 位和 32 位的默认值,并且成功了!

      默认删除 com.apple.versioner.perl

      不确定我的 perl 是 64 位还是 32 位,但我的 db 是 64 位的,并且仅使用默认默认值似乎效果更好;-)

      【讨论】:

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