Подключитесь к mysql из приложения node.js, ошибка: «dyld: ленивая привязка символа не удалась: символ не найден: _mysql_init» - PullRequest
1 голос
/ 16 ноября 2011

Я использую OSX 10.6.8 и MySQL из XAMPP.

Когда я запускаю это приложение 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

Уже пробовал пару решений после поиска в Google.Добавлены библиотеки mysql из каталога XAMPP, чтобы включить путь следующим образом:

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

попытался установить mysql5-devel с использованием MacPorts, но безуспешно, сборка не удалась:

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

Ответы [ 2 ]

1 голос
/ 11 июля 2012

Это связано с проблемой конфигурации в 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.

0 голосов
/ 17 января 2014

Я долго возился с этим, включая установку пути к библиотеке DVLD и копирование библиотеки в /usr/lib.

.

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

Черт, что угодно, чтобы все заработало. Наконец я попытался очистить настройки по умолчанию для 64 против 32 бит, и это сработало!

по умолчанию delete com.apple.versioner.perl

Не уверен, что мой perl - 64 или 32-битный, но моя БД - 64-битная, и просто использование значения по умолчанию, кажется, работает лучше; -)

...