【问题标题】:Coldfusion 9.0.1 Standard 64bit and Oracle 11g 64bit ODBC connection results in "architecture mismatch"Coldfusion 9.0.1 Standard 64bit 和 Oracle 11g 64bit ODBC 连接导致“架构不匹配”
【发布时间】:2011-10-24 08:09:09
【问题描述】:

我有一个新构建的 64 位 Windows Server 2008 R2 机器,我在上面安装了 64 位 Coldfusion 9 Standard。我已将其升级并修复到最新版本的 CF。我还在盒子上安装了 64 位 Oracle 11g (11.1.0.7.0) 客户端。我已经在 Windows 中使用 64 位 ODBC 数据源管理器创建了一个系统 DSN,并且可以成功测试数据源的连接。

所有这些安装都很顺利,但是,当我在 Coldfusion Administrator 中添加数据源时,我收到错误:

数据源连接验证失败:myDatabaseName

java.sql.SQLException: [Macromedia][SequeLink JDBC Driver][ODBC Socket] 内部错误:指定的 DSN 包含驱动程序和应用程序之间的体系结构不匹配 根本原因是:java.sql.SQLException: [Macromedia][SequeLink JDBC Driver][ODBC Socket]internal error: The specified DSN contains a architecture mismatch between Driver and Application

我很难准确理解这种架构不匹配的原因,因为该机器完全是 64 位的。我在查看所有正在运行的进程时看到,一些相关的 CF 进程正在 32 位中运行(Verity 相关进程、SOLR 和 CFDotNetSVC)。我不确定这些是否会导致这个问题,但我无法解释这种不匹配是否会来自其他原因。

有人有什么想法吗?

【问题讨论】:

    标签: oracle11g coldfusion-9


    【解决方案1】:

    我相信您需要step down to the 32-bit drivers 或使用本机 JDBC 驱动程序才能成功连接到 Oracle。我的建议是走 JDBC 路线,并通过使用数据源屏幕上的“其他”选择直接通过本机 Oracle JDBC 驱动程序连接。这样您将获得更好的性能,并通过 ColdFusion 更好地控制您的连接。

    Connecting to Oracle ColdFusion Livedocs 中的信息。

    【讨论】:

    • 丹,感谢您的回复。不幸的是,我们只获得了不包括 Oracle JDBC 驱动程序的 CF 标准的许可。
    • 如果您可以得到任何类型的 JDBC 驱动程序,那么您可以自己安装和使用它。您可以使用安装在 ColdFusion 的 JRE 中的任何 JDBC 驱动程序。
    • 非常感谢您的建议,Dan,我不知道您可以使用任何这样的 JDBC 驱动程序。
    【解决方案2】:

    根据 Dan 的建议,我在这里从 Oracle 获取了一个 JDBC 驱动程序:

    http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-111060-084321.html

    然后我移动了 JAR(在我的例子中为 ojdbc6.jar)并将其添加到我的 Coldfusion 类路径中。

    确定将数据源用于 Coldfusion 的正确设置稍微困难一些,但这是我最终使用的设置:

    JDBC URL: jdbc:oracle:thin:@//dbsrv.mydomain.com:1521/myDB.world
    Driver Class: oracle.jdbc.driver.OracleDriver
    Driver Name: Oracle Thin Driver
    

    然后是数据库的用户名和密码。

    果然,它就像一个魅力。

    Dan,我想给你打勾,因为你肯定让我朝着正确的方向前进,但我只能标记一个正确的。

    【讨论】:

    • 只要把我上面的答案标记为正确答案,就大功告成了。很高兴你让它工作:)
    • 我在 CF 11 试用模式下的新服务器上一切正常。当我申请 Standard 许可证时,Macromedia JDBC 驱动程序停止工作。这让我省了很多麻烦。
    【解决方案3】:

    我找到了另一种方法来做到这一点

    在您的 win2008 64 位操作系统上安装 64 位和 32 位的 ODBC 驱动程序(按此顺序)

    然后通过运行 odbc32ad32.exe 在 System32 文件夹和 SysWow64 文件夹上创建 DSN

    确保您的 tnsnames 在相应的网络/管理文件夹中正确设置(如果您使用 tnsnames 来维护您的 sids)

    现在在 CF 管理员上,您可以使用 ODBC 套接字和名称创建一个新的 ODBC 源。下一页应显示 64 位 DSN 设置中存在的所有 DSN 的下拉列表。当您在 CF 中对其进行测试时,它会奇怪地使用 32 位 DSN 设置的配置进行验证b

    瞧....您的连接应该可以工作。不用担心那些架构故障等

    【讨论】:

      【解决方案4】:

      我们需要为 ColdFusion 11 服务器设置 64 位 ODBC 连接,以在 Windows 2008 R2 Server 上查询 2012 SQL Server 实例。 ODBC 连接会显示,但永远不会工作。我们在验证时收到了许多不同的消息,例如“需要 SSL 连接才能工作”以及登录 SQL Server 时出现问题的超时消息。

      我偶然发现了这篇文章,我们决定按照设置 64 位 ODBC 连接然后有效地覆盖它们——使用 32 位 ODBC 保留名称。再次感谢开发人员,尤其是 Souzam!我的指示如下:


      对于 Windows 2008R2 Server,您必须将 64 位 ODBC 套接字配置伪装成 32 位,以便它们在 CF Admin 中显示为数据源(CF 11 中的明显错误):

      1. 通过 2008 R2 ODBC 应用程序创建 64 位 ODBC 连接,遵循允许您在 32 位配置中调用的命名约定。
      2. 在 SYSWOW64 (C:\Windows\SysWOW64) 中使用 odbcad32.exe 配置 ODBC 32 位连接,并在步骤 #1 中使用之前的 64 位名称。
      3. 在 CF Admin 中创建数据源,因为在创建 ODBC 套接字类型连接时,这些数据源应显示在下拉列表中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多