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

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

我试过重新创buildtnsnames.ora和sqlnet.ora文件。 我相当肯定他们是正确的,因为sqlplus可以连接到服务就好了。 但是node-oracle一直报告错误:“ORA-12154:TNS:无法parsing指定的连接标识符”。

这对我来说是莫名其妙的。 在我看来,如果我有我的ORACLE_HOME环境variables设置,那么node-oracle和sqlplus应该function相同。 我究竟做错了什么?

我已经尝试切换到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; } }); 

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

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

对我来说,解决scheme是编辑sqlnet.ora文件并进行更改

 names.directory_path = (TNSNAMES) 

 names.directory_path = (TNSNAMES, EZCONNECT) 

尝试指定TNS_ADMIN环境variables。

我如何configuration我的Oracle tnsnames文件位置?

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

从我可以告诉node-oracle不支持tnsnames.ora因为它使用选项来build立连接string,如//{hostname}:{port}/{database}