ADODB连接32位Access 2010失败求助:ODBC驱动报错IM002
解决32/64位混合环境下ADODB连接Access的问题
你的判断完全正确,这个报错几乎可以确定是32位与64位环境不兼容导致的,结合你的配置,给你几个具体的解决步骤:
1. 用对32位ODBC数据源管理器
Windows 7 64位系统默认打开的ODBC管理器(C:\Windows\System32\odbcad32.exe)是64位的,根本找不到你装的32位Access驱动。你得打开32位专属的ODBC管理器:
- 直接运行路径:
C:\Windows\SysWOW64\odbcad32.exe - 在这个管理器里,创建一个「用户DSN」或「系统DSN」,选择
Microsoft Access Driver (*.mdb, *.accdb)驱动,指向你的PhpPlay.accdb文件
2. 调整ADODB的连接代码
方式一:用DSN连接
如果已经创建好DSN,修改你的连接代码:
include("C:\php\adodb5\adodb.inc.php"); $db = NewADOConnection("access"); // 填你刚才创建的DSN名称,Access默认无用户名密码,留空即可 $db->Connect("你的DSN名称", "", "", "");
方式二:直接用连接字符串(无需DSN)
不想创建DSN的话,用完整的32位驱动连接字符串就行,注意路径里的反斜杠要转义,或者直接换成正斜杠:
include("C:\php\adodb5\adodb.inc.php"); $db = NewADOConnection("access"); // 转义反斜杠版本 $connStr = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:\\...\\PhpPlay.accdb;"; // 或者用正斜杠(更省心) // $connStr = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:/.../PhpPlay.accdb;"; $db->Connect("", "", "", $connStr);
3. 确认PHP是32位版本
32位的Access驱动只能和32位程序交互,如果你用的是64位PHP,肯定找不到驱动。检查方法:
- 新建一个php文件,写入
<?php phpinfo(); ?> - 访问这个文件,找到
Architecture项,确认是x86(32位),如果是x64,赶紧换成对应版本的32位PHP
4. 先测试原生ODBC连接(排除ADODB问题)
如果还是报错,可以先跳过ADODB,用原生PHP的odbc_connect测试,确认驱动和路径没问题:
$conn = odbc_connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:/.../PhpPlay.accdb;", "", ""); if (!$conn) { die("连接失败:" . odbc_errormsg()); } echo "连接成功!"; odbc_close($conn);
要是这个测试能成功,再换回ADODB的方式,就能定位是不是ADODB的配置问题。
额外提醒
- 确认你的32位Access 2010安装正常,在32位ODBC管理器的「驱动」标签里能看到
Microsoft Access Driver (*.mdb, *.accdb) - 如果Access文件路径有中文或空格,建议移到无中文无空格的路径下,避免编码或解析坑
内容的提问来源于stack exchange,提问作者Dinosaur
相关产品推荐
相关产品推荐

