ホームページ  >  記事  >  バックエンド開発  >  SQLSTATE[IM002] SQLDriverConnect: 0解决思路

SQLSTATE[IM002] SQLDriverConnect: 0解决思路

WBOY
WBOYオリジナル
2016-06-13 11:47:595529ブラウズ

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 试试



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。