Home >Backend Development >PHP Tutorial >SQLSTATE[IM002] SQLDriverConnect: 0解决思路

SQLSTATE[IM002] SQLDriverConnect: 0解决思路

WBOY
WBOYOriginal
2016-06-13 11:47:595558browse

SQLSTATE[IM002] SQLDriverConnect: 0
conn.php

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


运行后报错提示
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 试试



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn