Node.js — ошибка: [unixODBC] на db.open с Docker

Я использую 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.

Кто-нибудь когда-нибудь сталкивался с этой проблемой и может помочь? Спасибо!


person Stefan    schedule 25.05.2016    source источник


Ответы (1)


Я написал разработчику пакета ODBC по электронной почте, и он посоветовал мне отключить юникод и пересобрать пакет.

  1. Отключить юникод

  2. беги npm rebuild

Это решило проблему для меня.

person Stefan    schedule 30.05.2016