Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用节点oracle db npm Packagee时发生ORA-12514错误_Javascript_Node.js_Oracle_Oracle11g_Npm - Fatal编程技术网

Javascript 使用节点oracle db npm Packagee时发生ORA-12514错误

Javascript 使用节点oracle db npm Packagee时发生ORA-12514错误,javascript,node.js,oracle,oracle11g,npm,Javascript,Node.js,Oracle,Oracle11g,Npm,目前,我正在从事一个项目,该项目要求在oracle中完成后端。我使用了给定的,并在我的mac上安装了使用npm。我的文件内容如下 var oracledb = require('oracledb'); oracledb.getConnection( { user : 'username', password : 'password', connectString : 'username/password//hostname:port/sid' function(er

目前,我正在从事一个项目,该项目要求在
oracle
中完成后端。我使用了给定的,并在我的mac上安装了使用npm。我的文件内容如下

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);
  });
 }
});
运行node filename.js时,出现以下错误

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

我使用的节点版本是
v7.0.0
,npm版本是
v3.10.8
。我的oracle数据库也是云上的一个
11g
实例。有人能告诉我我做错了什么吗

根据主机名: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);
  });

从技术上讲,斜杠后面的连接字符串位是“服务名称”,而不是SID。这里给出了完整的Easy Connect语法:使用服务名称可以让Oracle Network在将应用程序连接到正在运行的实例时发挥更大的作用。服务名称很久以前就引入了(版本8?),现在已经成为标准。我知道这个问题已经解决了,但我也面临着类似的问题。我遵循了node oracledb中提到的方向。我已经安装了instantclient basic和sdk,并设置了它们的路径。安装Oracle11gExpress后,出现错误,无法找到oracledb模块。卸载11g express时,出现错误ORA-12541:TNS:no listener。您能告诉我如何安装11g以及我的连接字符串是什么吗?我知道这个问题已经解决了,但我也面临着类似的问题。我遵循了node oracledb中提到的方向。我已经安装了instantclient basic和sdk,并设置了它们的路径。安装Oracle11gExpress后,我发现一个错误,即找不到oracledb模块。卸载11g express时,出现错误
ORA-12541:TNS:no listener
。您能告诉我如何安装11g以及我的连接字符串是什么吗?
oracledb.getConnection(
 {
   user          : "hr",
   password      : "welcome",
   connectString : "(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = port))(CONNECT_DATA =(SID= sid)))"
 })