【问题标题】:Connect to Oracle DB from JavaScript从 JavaScript 连接到 Oracle 数据库
【发布时间】:2015-11-23 22:55:33
【问题描述】:

我正在使用专有的自动化测试产品,该产品使用 javascript 引擎来运行测试脚本。

我正在尝试连接到服务器上的 Oracle DB 以设置测试数据/环境。我的代码使用以下连接字符串:

var dbDriverString = 'Driver={Microsoft ODBC for Oracle};Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=1.1.1.1)(PORT=1521))(CONNECT_DATA=(SID=dbname)));Uid=abc;Pwd=abc;';

var connectionString = dbDriverString;

if (Database.DoAttach(connectionString, '') == true)
    Tester.Assert('Connected to database.', true);

我在我的 Windows VM 上为 Microsoft Windows (x64) 客户端安装了 Oracle Database 11g 第 2 版客户端 (11.2.0.1.0)。我无法连接到数据库。我不断收到以下错误:

[Microsoft][ODBC Driver Manager] 驱动程序的 SQLAllocHandle 失败 SQL_HANDLE_ENV 失败。

我已正确设置所有路径。 ORACLE_HOME 已设置,ORACLE_HOME/bin 也设置为环境变量。我也尝试过使用其他驱动程序/连接字符串。

任何建议都会有所帮助。

【问题讨论】:

  • 您确定您的 SID 实际上是“dbname”吗?
  • 我可以使用 SQL Developer 连接到 Oracle,使用运行 linux 的主机并提供​​相同的信息。我也可以通过自动化测试应用程序所在的 Windows VM 对其进行 ping 操作。我清理了连接字符串详细信息以不使用实际的,因为它有客户名称等。

标签: javascript oracle database-connection connection-string qa


【解决方案1】:

主要问题是应用程序架构和驱动程序架构之间的不匹配。以下是从头开始在一个新的虚拟机上完成的:

  1. 应用程序和驱动程序架构需要匹配,即 32 位或 64 位。
  2. 控制面板 -> 管理工具 -> Win 7 amd64 上的 ODBC 源将显示 64 位可用驱动程序。
  3. 要检查安装了什么 32 位,运行 -> cmd -> c:\Windows\SysWow64\odbcad32.exe。

如果您最终为 Oracle_Ora11gHome1 驱动程序 (wtf Oracle) 定义了用户/系统 DSN,则 TNS 服务名称为 yourip:port/sid

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-16
    • 2014-06-12
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 2017-05-18
    相关资源
    最近更新 更多