日期:2014-05-16  浏览次数:20582 次

SQLSTATE[IM002] SQLDriverConnect: 0
conn.php
<?php
try {
    $conn = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=".realpath("../data/data.mdb"));
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
?>


运行后报错提示
Connection failed: SQLSTATE[IM002] SQLDriverConnect: 0 [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

百度谷歌搜了老半天也不知道哪里设置有问题,php_pdo_odbc.dll有启用,phpinfo()也显示支持pdo/odbc等,mdb文件路径也是正确的

系统是win7sp1 x64
PHP是 5.5.7 VC11 x64 Thread Safe
Apache 是httpd-2.4.7-win64-VC11
Office 是 Office2010 x64

用PDO连接mysql数据库是正常,但连接mdb就出错,是不是我哪里设置错了,或者还需要在哪里安装或设置什么驱动

------解决方案--------------------
貌似是不支持Access的数据库,新的ACCDB格式,你可以用ACE来连接试一试呢
http://www.microsoft.com/en-us/download/details.aspx?id=13255
------解决方案--------------------
代码没有问题,请检查 com 扩展是否加载
extension=php_com_dotnet.dll
从 php5.4 开始,php for windows 不再默认加载 com 扩展了,需自己配置

你是用的是 odbc 连接串,而非 odbc 数据源
所以 PDO 需要通过 com 才能构造出数据源

------解决方案--------------------
echo realpath("../data/data.mdb");
看看是什么

你的连接串对于 Access2003 肯定是没有问题的
但对于 Access2010 是否可行,因为没有无法测试
加个 Uid=Admin 试试