为何MS Access数据库ODBC连接串仅在PHP5.4可用,高版本报错?
问题原因与解决方案
核心原因:运行环境位数与ODBC驱动不匹配
你遇到的问题本质是32位/64位程序与ODBC驱动的位数不兼容,具体细节如下:
- PHP 5.4.45属于早期版本,绝大多数官方编译包都是32位架构,它会调用系统32位ODBC驱动管理器(对应
C:\Windows\SysWOW64\odbcad32.exe),而你安装的Microsoft Access Driver (*.mdb)是32位版本,两者匹配所以能正常连接。 - PHP 8.1.12和DBeaver v22.2.4默认都是64位架构,它们会调用系统64位ODBC驱动管理器(对应
C:\Windows\System32\odbcad32.exe)。如果你的Access驱动是32位,64位管理器无法识别该驱动,就会抛出SQLSTATE[IM002]错误。
验证方法
你可以手动确认驱动注册情况:
- 打开
C:\Windows\SysWOW64\odbcad32.exe(32位ODBC管理器),在「驱动程序」标签页中应该能找到Microsoft Access Driver (*.mdb); - 打开
C:\Windows\System32\odbcad32.exe(64位ODBC管理器),大概率找不到该驱动,这就能直接印证位数不匹配的问题。
可行解决方案
安装对应位数的Access驱动
如果你的PHP 8.1和DBeaver是64位,下载并安装64位版本的Access驱动(针对.mdb格式的64位驱动需使用Access Database Engine 2010的64位安装包,若系统已安装32位Office,需通过静默安装避免冲突)。切换为32位运行环境
- 下载32位编译的PHP 8.1版本替换现有环境;
- 安装32位版本的DBeaver,或强制以32位模式启动(部分版本需单独下载32位安装包);
调整后就能和你已安装的32位Access驱动匹配。
重新注册驱动(若安装异常)
如果32位ODBC管理器里也找不到驱动,卸载现有驱动后重新安装,确保安装过程无报错。
内容的提问来源于stack exchange,提问作者aetonsi
相关产品推荐
相关产品推荐

