[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序


1. 今天下午修改很早做的一个系统,用的是JDBC-ODBC驱动。

   在我本机Tomcat做测试,发现使用startup.bat启动Tomcat服务后,访问Web服务一切正常。

   但使用Monitor Tomcat 启动Tomcat作为服务例程,则访问Web服务报错:

     [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序。


2. 但ODBC数据源配置时测试也正常。

   我晕。


3. 跟踪排查一下,发现是在 DriverManager.getConnection()的时候报错的。

   可能还是ODBC的问题。

   但不知道是咋回事了。


4. 上网查了N久,一语道破“要用系统DSN”。
 
   关于这点还真没有想到。


5. 一直使用“用户DSN”建立“用户数据源”的。

   DSN:Date Source Name,数据源名称。


6. 在“ODBC数据源管理器”中,设置用于连接数据库的DSN有三种: 用户DSN、系统DSN和文件DSN。

   因为Monitor Tomcat启动的Tomcat服务是作为系统级NT服务例程运行的,这样就无法访问“用户DSN”建立的“用户数据源”。


7. 果然,建立了“系统数据源”就OK了。

   ^_^


                                                                       2007/04/18 于石

### ODBC 数据源配置错误分析 当遇到 `[Microsoft][ODBC 驱动程序管理器] 发现数据源名称并且未指定默认驱动程序` 错误时,这通常意味着应用程序尝试连接到数据库能找到有效的 DSN (Data Source Name),或者缺少必要的驱动程序设置[^1]。 #### 可能的原因 - 应用程序使用的 DSN 名称不正确或不存在。 - 系统中确实没有安装所需的 ODBC 驱动程序。 - 连接字符串中的参数有误,特别是 `Driver` 参数可能指定了一个不存在的驱动程序名。 #### 解决方法 ##### 检查并创建 DSN 如果应用依赖于命名的数据源,则需确认该 DSN 已经被正确定义。可以通过 Windows 的 "ODBC Data Sources" 控制面板来查看现有的 DSN 列表,并根据需要添加新的系统级或用户级别的 DSN 设置[^2]。 ##### 使用完整的连接字符串代替 DSN 对于某些应用场景来说,可以直接通过提供详细的连接字符串绕过 DSN 定义过程。例如,在 PHP 中可以这样定义: ```php $this->conn->Open( "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};" . "DBQ=" . realpath($this->dbPath) . ";" . "Uid=;Pwd=" . $this->dbPWD . ";" ); ``` 注意这里使用的是 `{Microsoft Access Driver (*.mdb, *.accdb)}` 而不是简单的 `{Microsoft Access Driver (*.mdb)}`, 因为较新版本的 Microsoft Access 文件扩展名为 `.accdb`[^3]。 ##### 安装缺失的 ODBC 驱动程序 确保计算机上已经安装了对应类型的 ODBC 驧程。可以从微软官方网站下载最新的 Access Database Engine 或其他适用的 ODBC Drivers 来解决问题。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值