【问题标题】:PHP ODBC connect() to Access - architecture mismatchPHP ODBC connect() 到 Access - 架构不匹配
【发布时间】:2012-03-02 10:58:03
【问题描述】:

我已经用谷歌搜索了好几个小时了。

看过无数文章如:Is there a Windows 7 ODBC driver for Access?

我已尝试同时使用 ODBC 管理员 - 并且成功地为两者添加了系统 DSN:

  • Microsoft Access 数据库
  • 微软做 Access 数据库

当我尝试连接本地存储的 Access DB 时:

odbc_connect('Aquarius2', '', '');

我收到以下错误:

odbc_connect(): SQL 错误: [Microsoft][ODBC Driver Manager] The specified DSN contains a architecture mismatch between Driver and Application, SQLConnect in SQLConnect in C:\export\export.php on line 3

简单脚本尝试安装最新的访问驱动程序 - Aquarius2 是我的 DSN 的名称仍然失败。

我没有想法 - 我错过了什么?

问候, 亚历克斯

【问题讨论】:

  • 您使用的是 32 位还是 64 位 dsn?

标签: php ms-access odbc


【解决方案1】:

您正在尝试将 64 位应用程序与 32 位 ODBC 驱动程序一起使用,反之亦然。看ODBC on 64-bit Windows Platforms

您需要先确定您的 PHP 应用程序是 64 位还是 32 位。

然后,一旦您确定需要启动正确的 ODBC 管理员 - 其中有 2 个,一个用于 32 位,一个用于 64 位。 64 位 ODBC 管理员位于管理工具、控制面板中,32 位管理员位于%windir\syswow64\odbcad32.exe

将应用程序架构与正确的 ODBC 管理员匹配后,您需要创建系统 DSN。如果您在管理员中找不到 MS Access 驱动程序,则需要为该架构下载一个。我不确定是否有 64 位 MS Access ODBC 驱动程序;如果没有,您将不得不更改您的应用程序架构。

The article I referenced 有更多信息。

【讨论】:

  • 我想我已经完成了所有这些,很明显这是某种 32/64 位不匹配,但我不知道为什么。
  • 我不知道如何改写我的答案以使其更清楚 - 抱歉。
  • 应用程序正在使用 PHP,它的 odbc_x() API - 运行 phpinfo() 似乎告诉我 ODBC API 是 win32。
  • 原来我运行的 PHP 版本是为 WIN64 运行的 - 甚至没有发生这可能是问题,但安装 WIN32 版本似乎已经解决了不匹配问题。非常感谢:)
  • 令人困惑的是,如果您在命令提示符下键入 odbcad32.exe,它似乎可以工作,但实际上您并没有得到 bohica 引用的“32 位 odbc 管理员”。确保运行%windir%\syswow64\odbcad32.exe
【解决方案2】:

另一个注意事项:如果您安装了 64 位 WampServer,它会安装 64 位的所有东西 - Apache、MySQL、PHP。如果您想要一个 32 位 PHP,请转到 PHP downloads page 并选择“win32”版本之一。运行应用程序时不要忘记更改 php 路径!加上设置 32 位 ODBC 管理员 - %windir\syswow64\odbcad32.exe - 你应该很高兴。

【讨论】:

  • 奇怪的是,即使我安装了 64 位版本的 wampServer,PHP_INT_MAX 常量等于 2^31-1,所以我认为 PHP 是 32 位的。现在下载 32 位 wampserver 并保持我的手指交叉。
  • 是的。有效!虽然切换 wampserver 版本有点像 PITA。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 2019-11-27
  • 1970-01-01
  • 1970-01-01
  • 2018-07-26
相关资源
最近更新 更多