Node.js和node-oracle:连接到Oracle数据库的问题

时间:2012-07-19 20:04:30

标签: oracle node.js node-oracle

我正在编写一个从Oracle数据库中提取数据的Node.js应用程序。 DBA最近将数据库迁移到另一台机器,一切都破了。

我尝试过重新创建tnsnames.ora和sqlnet.ora文件。我很确定它们是正确的,因为sqlplus可以很好地连接到服务。但是node-oracle一直报告错误:“ORA-12154:TNS:无法解析指定的连接标识符”。

这对我来说是莫名其妙的。在我看来,如果我设置了我的ORACLE_HOME环境变量,那么node-oracle和sqlplus都应该具有相同的功能。我做错了什么?

我尝试过切换到node-db-oracle,但报告了同样的问题。我很难过。

编辑:这就是我的联系方式:

    database = new oracle.Database({
            hostname: Preferences["oracle_host"],  // FQDN of the database
            port: Preferences["oracle_port"],
            user: Credentials["oracle_login"],
            password: Credentials["oracle_password"],
            database: Preferences["oracle_database"]
        });

    connection = database.connect(function(error) {
            if(error) {
                Utilities.logger.error(error);
            }
            else {
                Utilities.logger.info("Connected to Oracle database " + Preferences["oracle_host"]);    
                if(callback) callback.call(this, collection, options);
                connection = this;
            }

        });

3 个答案:

答案 0 :(得分:2)

我能够使用sqlplus连接但不使用nodejs。我正在做这样的连接

oracledb.getConnection(
  {
    user          : "test",
    password      : "test",
    connectString : "150.150.50.50:1521/MYDB"
  }

对我有用的解决方案是编辑sqlnet.ora文件并更改

names.directory_path = (TNSNAMES)

names.directory_path = (TNSNAMES, EZCONNECT)

答案 1 :(得分:0)

尝试指定TNS_ADMIN环境变量。

How can I configure my Oracle tnsnames file location?

答案 2 :(得分:0)

documentation帮助我使用node-oracle连接到oracle数据库。在我出错的地方,我认为database属性是数据库的名称,但实际上它是service_name(即GLOBAL_DBNAME文件中定义的listener.ora Oracle数据库,而不是SID_NAME)。

我可以告诉node-oracle不支持tnsnames.ora,因为它使用选项来构建连接字符串,例如//{hostname}:{port}/{database}

相关问题