【发布时间】:2015-07-14 04:43:32
【问题描述】:
我在 Windows Server 2012 上运行 AWS 每小时 ColdFusion 11 实例。它已锁定。
我正在尝试通过 cfquery (DSN) 访问 .MDB 文件。
我已按照http://blogs.coldfusion.com/post.cfm/coldfusion-10-64bit-and-msaccess 的说明进行操作,http://www.coldfusionmuse.com/index.cfm/2010/12/31/Access.on.64bit.ColdFusion 提供了几乎相同的答案。
此外,我对 ColdFusion Windows 用户拥有 HKEY_LOCAL_MACHINE/SOFTWARE/ODBC 完全权限。
根据 Anit 的建议,我安装了 32 位 AccessDatabaseEngine。我删除了 ODBC 工具和 CF 管理员中的所有数据源并重新添加了它们。我还将服务登录从锁定用户更改为本地服务以获得完整权限。我什至重新启动了整个服务器。
但是我在运行时得到“[Macromedia][SequeLink JDBC Driver][SequeLink Server]指定的数据源未定义”:
<cfquery name="CJT" datasource="membersAdministration">
SELECT *
FROM MSysObjects
</cfquery>
我在 CF Admin 中添加了 Microsoft Access 数据源,并为其命名和数据库文件。按预期收到的结果是:“无法更新 NT 注册表。变量 DRIVERPATH 未定义。”
然后我运行“C:\Windows\SYSWOW64\odbcad32.exe”并以相同的名称和路径添加系统 DSN。
我什至尝试过重启 CF。
我看到 HKEY_LOCAL_MACHINE/SOFTWARE/ODBC 和 HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/ODBC 有新条目。
有什么我可能缺少的想法吗?
这是堆栈跟踪:
java.sql.SQLException: [Macromedia][SequeLink JDBC Driver][SequeLink Server]The specified data source is not defined.
at macromedia.sequelink.ssp.Diagnostic.toSQLException(Unknown Source)
at macromedia.sequelink.ssp.Chain.cnvDiagnostics(Unknown Source)
at macromedia.sequelink.ssp.Chain.decodeDiagnostic(Unknown Source)
at macromedia.sequelink.ssp.Chain.decodeBody(Unknown Source)
at macromedia.sequelink.ssp.Chain.decode(Unknown Source)
at macromedia.sequelink.ssp.Chain.send(Unknown Source)
at macromedia.sequelink.ctxt.conn.ConnectionContext.connect(Unknown Source)
at macromedia.jdbc.sequelink.SequeLinkImplConnection.open(Unknown Source)
at macromedia.jdbc.slbase.BaseConnection.connect(Unknown Source)
at macromedia.jdbc.slbase.BaseConnection.setupImplConnection(Unknown Source)
at macromedia.jdbc.slbase.BaseConnection.open(Unknown Source)
at macromedia.jdbc.slbase.BaseDriver.connect(Unknown Source)
at macromedia.jdbc.MacromediaDriver.connect(Unknown Source)
at coldfusion.server.j2ee.sql.pool.JDBCPool.createPhysicalConnection(JDBCPool.java:614)
at coldfusion.server.j2ee.sql.pool.ConnectionRunner$RunnableConnection.run(ConnectionRunner.java:67)
at java.lang.Thread.run(Thread.java:745)
【问题讨论】:
-
您需要安装Microsoft Access 2013 Runtime microsoft.com/en-us/download/details.aspx?id=39358
-
您为什么使用 Access? Access 并不是真正设计为以这种方式使用的。最好使用 MySQL、PostgreSQL 或 SQL Server Express。
-
@ScottStroz 这是客户对他们获得的东西的要求。我们完全清楚后果。
-
我已经很久没有使用过 CF11(或 Access),所以这可能是一个愚蠢的问题,但是......如果你使用 MS Access Unicode 驱动程序,你会得到相同的结果吗?显然不是同一个驱动程序,但我记得上次使用它时使用它的运气比使用 ODBC 好。
-
@ChrisTierney,也以被动模式安装 64 位 AccessDatabaseEngine。
标签: ms-access coldfusion windows-server-2012