Я использую ODBC для доступа к своей базе данных (Advantage Database Server) в серверной службе Node.js. На моем тестовом сервере (CentOS 7.2.1511) все работает правильно. Но в рабочей системе (Docker, Debian 8.4) возникает странная ошибка, когда приложение пытается подключиться к базе данных.
Это мой package.json
:
{
"name": "some-name",
"version": "47.11",
"private": false,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"body-parser": "~1.13.2",
"debug": "~2.2.0",
"express": "~4.13.1",
"jade": "~1.11.0",
"morgan": "~1.6.1",
"serve-favicon": "~2.3.0",
"sync-request": "~2.0.1",
"winston": "2.1.1",
"express-winston": "0.4.1",
"cookie-parser": "1.4.0",
"underscore.string": "3.2.2",
"string-template": "0.2.1",
"underscore": "1.8.3",
"request": "2.67.0",
"odbc": "1.2.1",
"node-schedule": "1.1.0"
}
}
Следующий фрагмент кода выдает ошибку:
var pool = new (require("odbc").Pool)()
var db = require("odbc")()
var connectionString = "DSN=Advantage;UID=<username>;PWD=<password>"
var con = db.openSync(connectionString)
Сообщение об ошибке:
Error: [unixODBC]顔ĕ
at Error (native)
at Database.openSync (/usr/src/app/node_modules/odbc/lib/odbc.js:150:26)
at repl:1:10
at REPLServer.defaultEval (repl.js:262:27)
at bound (domain.js:287:14)
at REPLServer.runBound [as eval] (domain.js:300:12)
at REPLServer.<anonymous> (repl.js:431:12)
at emitOne (events.js:82:20)
at REPLServer.emit (events.js:169:7)
at REPLServer.Interface._onLine (readline.js:211:10)
Сценарий Perl, соединяющий базу данных и считывающий данные из одной из ее таблиц, прекрасно работает на той же машине (соответственно, в контейнере Docker). Так что это не неправильно настроенный odbc.ini
или какая-то другая проблема с драйвером odbc.
Кто-нибудь когда-нибудь сталкивался с этой проблемой и может помочь? Спасибо!