在这个示例 nodejs 应用程序中,我尝试使用钱包连接到 oracle 数据库。钱包是在服务器中创建的,钱包目录的内容被压缩并解压缩到我项目的根文件夹中(在一个名为 的文件夹中wallet
)。
进一步包含sqlnet.ora
在同一文件夹中的文件。它的内容是:
WALLET_LOCATION=
(SOURCE=
(METHOD=FILE)
(METHOD_DATA=
(DIRECTORY=D:\code\js\myoracledb-app\wallet)
)
)
主程序 ( index.js
) 非常简单:
const oracledb = require('oracledb');
const path = require('path');
const configDir = path.join(__dirname, 'wallet');
// oracledb.initOracleClient({ configDir: configPath });
// oracledb.initOracleClient();
const poolOptions = {
externalAuth: true,
connectionString: '8.83.87.12:1522/ORCLCDB',
configDir
};
oracledb.createPool(poolOptions, function(err, pool){
if(err) {
console.error(err);
process.exit(1);
}
else {
pool.getConnection(function(err, conn){
if(err) {
console.error(err);
process.exit(2);
}
else {
conn.execute('select sysdate from dual', [], {}, function(err, result){
if(err) {
console.error(err);
process.exit(3);
}
else {
conn.release(function(){
console.log('Result:', JSON.stringify(result));
process.exit(0);
});
}
});
}
});
}
});
我已用作oracledb
客户端来连接到我的远程数据库。我在回调中收到错误pool.getConnection()
。这由返回的错误代码验证。
控制台的错误输出是:
[Error: ORA-01017: invalid username/password; logon denied] {
errorNum: 1017,
offset: 0
}
我尝试了各种尝试初始化 oracledb 客户端(oracledb.initOraClient()
),但是,结果是一样的。我在这里做错了什么?
Ps:如果对钱包的创建方式感兴趣,请阅读这篇文章及其评论。