Oracle11g Coldfusion 9.0.1标准64位和Oracle 11g 64位ODBC连接导致;“架构不匹配”;

Oracle11g Coldfusion 9.0.1标准64位和Oracle 11g 64位ODBC连接导致;“架构不匹配”;,oracle11g,coldfusion-9,Oracle11g,Coldfusion 9,我有一个新构建的64位Windows Server 2008 R2机箱,我已经在其上安装了64位Coldfusion 9标准。我已经升级并热修复了CF的最新版本。我还在机箱上安装了64位Oracle 11g(11.1.0.7.0)客户端。我已经在Windows中使用64位ODBC数据源管理员创建了一个系统DSN,可以成功地测试数据源的连接 所有这些安装都进行得很顺利,但是,当我在Coldfusion Administrator中添加数据源时,我收到了以下错误: 数据源myDatabaseName

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

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

数据源myDatabaseName的连接验证失败

java.sql.SQLException:[Macromedia][SequeLink JDBC驱动程序][ODBC套接字]内部错误:指定的DSN包含驱动程序和应用程序之间的体系结构不匹配 根本原因是:java.sql.SQLException:[Macromedia][SequeLink JDBC Driver][ODBC Socket]内部错误:指定的DSN包含驱动程序和应用程序之间的架构不匹配

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


有人有什么想法吗?

我认为您需要或者使用本地JDBC驱动程序来成功连接到Oracle。我的建议是走JDBC路线,使用Datasource屏幕上的“other”选项,通过原生Oracle JDBC驱动程序直接连接。通过这种方式,您将获得更好的性能,并通过ColdFusion对连接进行更多的控制


ColdFusion Livedocs中的信息。

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

然后我移动了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
然后输入数据库的用户名和密码

果然,它起了很大的作用


丹,我想给你打个勾,因为你肯定让我走对了方向,但我只能打一个正确的标记。

我找到了另一种方法

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

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

确保tnsnames在相应的网络/管理文件夹中设置良好(如果使用tnsnames维护SID)

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


瞧,你的关系应该正常。无需担心那些架构故障等

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

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


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

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

  • 丹,谢谢你的回复。不幸的是,我们只获得了CF标准的许可,该标准不包括Oracle JDBC驱动程序。如果您可以获得任何类型的JDBC驱动程序,那么您可以自己安装并使用它。您可以使用安装在ColdFusion的JRE中的任何JDBC驱动程序。非常感谢您的建议,Dan,我不知道您可以使用任何这样的JDBC驱动程序。只需将上面的答案标记为正确答案,就可以了。很高兴你让它工作:)我让一切工作在我们的新服务器在CF 11试用模式。当我为标准应用许可证时,Macromedia JDBC驱动程序停止工作。这让我省去了很多头痛。