background image

function

.odbc-connect

]: SQL error: [Microsoft][ODBC Microsoft Access Driver]

 

常见错误 不能打开注册表关键字 

'Temporary (volatile) Jet DSN for process 0xdd0 Thread 0xcb8 DBC 0x14bd024 Jet'。, SQL state 
S1000 in SQLConnect in E:\wwwroot\phperz.com\phpweb\conn.php on line 8
出现这种错误证明你使用的是 odbc 的 access 驱动,就是上面说的第一种连接数据库的方法

$connstr

=DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".

$db

;

并且你当前访问的文件和你的 conn.php 数据库连接文件不在同一目录下,包含 conn.php 时
用的相对路径,

 

比如

include

("../conn.php"),由于 php 处理

include

 

函数里的文件和 asp 的不同,

造成了数据库路径上的错误,
解决方法:
1,检查你数据库的路径,是不是用

realpath

()函数加相对路径来获取的,

比如:

$db

=

realpath

("../db.mdb");

如果是,请换种方法获取数据库地址,比如用:

$_SERVER

['DOCUMENT_ROOT']来获取你网

站的根目,再加数据库的地址
例:

$db

=

$_SERVER

['DOCUMENT_ROOT']."\db.mdb";

 
2,检查权限,赋予他 Everyone 权限
3,换种连接方式,微软的 odbc 驱动存在一些不稳定的 bug,有可能导致此类错误,据说微软
本身已经放弃了对 odbc 数据源连接方式的支持,并建议用户使用 oledb 方式,应该将连
接字串改为如下方式:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=".

$db

;

错误 2:
Fatal error: Uncaught exception 'com_exception' with message 'Source: ProviderDescription: 验证
失败。' in E:\wwwroot\phperz.com\phpweb\conn.php:7 Stack trace: #0 
E:\wwwroot\phperz.com\phpweb\conn.php(7): com->Open('Provider=Micros...') #1 ...............
 
这种错误说明你用的是 oledb 的方式连接的数据库,并且也是数据库的路径造成的.
解决方法同上,用

$_SERVER

['DOCUMENT_ROOT']."\db.mdb";方法获取数据库地址

错误 3:
代码如下:
 
Warning: odbc_connect() [

function

.odbc-connect

]: SQL error: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动
程序, SQL state IM002 in SQLConnect in E:\wwwroot\phperz.com\phpweb\conn.php on line 8
 
odbc 驱动方式连接的数据库,错误原因多半是你的连接字符串写错了,完整的连接字符串应
该是:
代码如下: