2016-05-25 5 views
0

私は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ドライバの問題が誤って構成されていることではありません。

誰かがこの問題に遭遇して助けになりましたか?ありがとうございました!

答えて

0

私はODBCパッケージの開発者に電子メールを送って、彼はユニコードを無効にしてパッケージを再構築するように勧めました。

  1. Disable unicode

  2. npm rebuild

実行はこれが私のために問題を解決しました。