目前,我正在做一个项目,它要求后端在oracle中完成。我使用给定的链接并在我的mac上使用npm安装了节点-oracledb。我的文件内容如下
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实例。有人能告诉我我做错了什么吗?
发布于 2017-01-16 17:32:31
看起来您的connectString是错误的,根据文档,它只是主机名:port/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);
});编辑:
至少在2019年7月(可能在7月之前),connectString : "hostname:port/sid"不再使用oracledb打印错误:ORA-12514: TNS:listener does not currently know of service requested in connect descriptor,正如找到的这里一样,您可以将connectString设置为(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = YOUR_HOST)(PORT = YOUR_PORT))(CONNECT_DATA =(SID= YOUR_SID)))以使用SID连接到数据库。
因此,更新的getConnection (关于这个问题)将是:
oracledb.getConnection(
{
user : "hr",
password : "welcome",
connectString : "(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = port))(CONNECT_DATA =(SID= sid)))"
})https://stackoverflow.com/questions/41681688
复制相似问题