2017-01-16 5 views
1

現在、私はバックエンドでoracleを実行する必要があるプロジェクトに取り組んでいます。私は与えられたlinkを使用し、node-oracledbをnpmを使用して私のMacにインストールしました。私は、ノードのバージョンを使用していますノードoracle-db npm packagaeを使用中にORA-12514エラーが発生しました

var oracledb = require('oracledb'); 

oracledb.getConnection(
{ 
user   : 'username', 
password  : 'password', 
connectString : 'username/password//hostname:port/sid' 
function(err, connection) 
{ 
if (err) { 
    console.error(err.message); 
    return; 
}else{ 
    connection.execute(
    "SELECT * from TableName", 
    function(err, result) 
    { 
    if (err) { console.error(err); return; } 
    console.log(result.rows); 
    }); 
} 
}); 

私はノードfilename.jsを実行すると、私は次のエラー

ORA-12154: TNS:could not resolve the connect identifier specified 

を取得し、次のように内容は私のファイルがv7.0.0で、NPMのバージョンがv3.10.8です。また、私のOracleデータベースは、クラウド上の11gインスタンスです。誰かが私に間違っていることを教えてもらえますか?

+0

私はこの問題が解決されましたが、私は同様の問題に直面しています知っています。私はノードoracledbで方向の言及をフォローしました。私はinstantclient basicとsdkをインストールしてパスを設定しました。 Oracle 11g Expressをインストールするとすぐにエラー「oracledb module not found」が表示されます。 11g Expressをアンインストールすると、エラー「ORA-12541:TNS:no listener'」が表示されます。 11gをインストールする方法と接続文字列を教えてください。 – user557657

答えて

2

あなたのconnectStringはDocsによると、間違っているように見えますが、単にホスト名をis't:ポート/ sidの

var oracledb = require('oracledb'); 

oracledb.getConnection(
    { 
    user   : "hr", 
    password  : "welcome", 
    connectString : "hostname:port/sid" 
    }) 
    .then(function(conn) { 
    return conn.execute(
     "SELECT department_id, department_name " + 
     "FROM departments " + 
     "WHERE manager_id < :id", 
     [110] // bind value for :id 
    ) 
     .then(function(result) { 
     console.log(result.rows); 
     return conn.close(); 
     }) 
     .catch(function(err) { 
     console.error(err); 
     return conn.close(); 
     }); 
    }) 
    .catch(function(err) { 
    console.error(err); 
    }); 
+1

技術的には、スラッシュの後の接続文字列のビットはSIDではなく「サービス名」です。 Easy Connectの完全な構文は、次のとおりです。http://docs.oracle.com/database/122/NETAG/configuring-naming-methods.htm#NETAG255サービス名を使用すると、Oracle Networkはアプリケーションを実行中のインスタンス。サービス名はずっと前から導入され(バージョン8?)、標準化されました。 –

+0

私はこの問題は解決されているが、私は同様の問題に直面している知っている。私はノードoracledbで方向の言及をフォローしました。私はinstantclient basicとsdkをインストールしてパスを設定しました。 Oracle 11g Expressをインストールするとすぐにエラーoracledbモジュールが見つかりません。 11g Expressをアンインストールすると、ORA-12541:TNS:no listenerが発生します。 11gをインストールする方法と接続文字列を教えてください。 – user557657

関連する問題