私はODBCを使用して、Node.jsバックエンドサービスのデータベース(Advantage Database Server)にアクセスしています。私のテストサーバー(CentOS 7.2.1511)ではすべて正常に動作します。しかし、プロダクションシステム(Docker、Debian 8.4)では、アプリケーションがデータベースに接続しようとすると奇妙なエラーが発生します。Node.js - Dockerでdb.openのエラー:[unixODBC]
これは私の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)
A Perlスクリプトそのテーブルの1つのデータが同じマシン上で完全に正常に動作します(それぞれドッカーコンテナ)。これは、odbc.ini
やその他のodbcドライバの問題が誤って構成されていることではありません。
誰かがこの問題に遭遇して助けになりましたか?ありがとうございました!