database - 为什么我得到 "Data source name not found and no default driver specified"并如何解决?

标签 database odbc

尝试在Windows上制作通过ODBC连接到数据库的程序时,出现以下错误:

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified.



我确定我的代码是正确的。它甚至可以在其他PC上运行。

为什么会出现此错误?以及我该如何解决?

最佳答案

是什么导致此错误?
简而言之,该错误消息告诉您ODBC驱动程序管理器找不到您在连接字符串或DSN中指定的驱动程序。
这可能有3个常见原因:

  • 您尝试使用的驱动程序未安装在系统上
  • 已安装驱动程序,但是它与您正在运行的代码的位数不匹配
  • 输入驱动程序名称
  • 时出错

    如何检查系统上安装了哪些驱动程序?
    您可以转到ODBC数据源管理器来检查系统上安装的驱动程序。要打开它,请按⊞Win + R,然后输入:odbcad32.exe。然后检查“驱动程序”选项卡以获取已安装的驱动程序。 “名称”列指示您应该在连接字符串或DSN中使用的确切名称。
    如果您使用的是64位Windows,则只会列出安装在64位Windows上的64位驱动程序
    你的系统。要查看安装了哪些32位驱动程序,请按⊞Win + R,然后输入:C:\Windows\SysWOW64\odbcad32.exe,然后再次转到“驱动程序”选项卡。
    enter image description here
    驱动程序已安装,但可能是错误的位,我该怎么办?
    然后,您有两种选择,要么调整正在运行程序的位数,要么安装具有不同位数的驱动程序。
    Windows默认情况下安装的某些驱动程序只有32位版本。这些不能与64位程序一起使用。
    通常,您可以在任务管理器中确定程序在哪个位下运行。在Windows 10中,所有32位程序都在其名称后附加了(32位)。如果不存在,则您可能正在运行64位程序,并且大多数现代编程语言和环境默认情况下都在64位上运行,但允许您切换到32位。但是,不同编程语言的详细信息不在此问题的范围内。
    如何确认我没有输入错误的驱动程序名称?
    ODBC连接字符串如下所示:
    DRIVER={DriverName};ParameterName1=ParameterValue1;ParameterNameN=ParameterValueN;
    
    如果驱动程序名称部分可能包含特殊字符,则需要用大括号分隔,并且需要与ODBC数据源管理器中找到的已安装驱动程序名称完全匹配,包括空格和打印字符,但不包括大写字母。
    请注意,对于已部署的代码,驱动程序必须在运行该代码的计算机/服务器上存在
    我没有驱动程序,或者位错了,我该在哪里找到合适的驱动程序?
    这取决于您要使用哪个驱动程序。
    带有下载位置的通用驱动程序列表(在同一URL上的所有32位和64位):
  • Microsoft ODBC Driver 17 for SQL Server
  • Microsoft Access数据库驱动程序,它是Microsoft Access Database Engine的一部分。请注意,不支持同时安装32位和64位Access ODBC驱动程序。
  • Oracle的MySQL ODBC connector
  • Christian Werner(非官方)的开源SQLite ODBC driver
  • psqlODBC,官方PostgreSQL驱动程序

  • 如果未列出您要使用的驱动程序,则通常可以使用Google轻松找到该位置。

    关于database - 为什么我得到 "Data source name not found and no default driver specified"并如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58571740/

    相关文章:

    c# - 试图弄清楚这个数据库文件是否有压缩数据

    java - 如何使用 HashMap 填充 MySQL 数据库

    php - Oracle ODBC unixODBC][驱动程序管理器]无法打开库

    database - SQLite:获取日期

    mysql比较两个表找出不匹配的记录

    postgresql - 如何在运行时更改 Crystal Report 的 ODBC 数据库连接?

    mysql - 如何解决链接服务器问题?

    c++ - ODBC 如何确定驱动程序支持哪些功能?

    oracle 10g 的 android odbc 连接

    database - 删除超过 60 分钟的 Elequent 记录