【问题标题】:Postgresql odbc driver error c# [IM002] [Microsoft][ODBC Driver Manager] Data source name not foundPostgresql odbc driver error c# [IM002] [Microsoft][ODBC Driver Manager] Data source name not found
【发布时间】:2016-04-19 10:52:50
【问题描述】:

我正在设置一个与数据库无关的数据库应用程序,当使用 postgresql 进行测试时,我得到了标准的 dsn 错误:

[IM002] [Microsoft][ODBC Driver Manager] 未找到数据源名称

我通常使用 SQL server 和 MySQL,所以我是 postgres 的新手,我尝试了标准推荐的连接字符串:

"Driver = {PostgreSQL}; Server = localhost; Database = postgres; Port = 5432; Uid = postgres; Pwd = XXXXXX;"

我也试过安装postrgesql后安装的odbc驱动的名字:

"Driver = {PostgreSQL ODBC Driver(UNICODE)}; Server = localhost; Database = postgres; Port = 5432; Uid = postgres; Pwd = XXXXXX;"

在 odbc 管理器中设置 DSN 也可以完美地使用 unicode 驱动程序,所以我不明白为什么我无法在我的应用程序中连接,我在连接字符串中使用的驱动程序名称是否有错误?

【问题讨论】:

    标签: c# database odbc postgresql-9.5


    【解决方案1】:

    您的错误信息看起来很奇怪。它告诉 DSN 未找到。你确定你用Driver=...的连接字符串吗?

    您可以以多种形式使用 ODBC 连接字符串。一开始你已经创建了DSN,所以你可以使用它:

    DSN=mn_test; Uid=postgres; Pwd=postgres;
    

    那么你可以使用其他形式的连接字符串:

    Driver={PostgreSQL UNICODE};Server=127.0.0.1; Port=5493; Database=mn_test; Uid=postgres; Pwd=postgres;
    

    两者都适用于我的旧 32 位 Windows 环境。我用简单的 Python 脚本测试它们(我使用 ActiveState Python,其中有简单的odbc 模块):

    import odbc
    
    def test_odbc(connect_string):
        print(connect_string)
        db = odbc.odbc(connect_string)
        c = db.cursor()
        rs = c.execute("SELECT version()")
        for txt in c.fetchall():
            print('%s' % (txt[0]))
        print('-----')
    
    test_odbc('Driver={PostgreSQL UNICODE};Server=127.0.0.1; Port=5493; Database=mn_test; Uid=postgres; Pwd=postgres;')
    test_odbc('DSN=mn_test; Uid=postgres; Pwd=postgres;')
    

    【讨论】:

    • 它现在可以工作了,重新启动后,我从注册表中复制了驱动程序名称字母,我使用的是其他网站上建议的驱动程序名称后缀(x64),但实际上这个postgresql 软件包附带的标准 odbc 驱动程序不需要安装,这可能是导致我的问题的原因,也仅将驱动程序引用为 {PostgreSQL} 也不适用于标准 ODBC 驱动程序。
    【解决方案2】:

    创建 DSN 时,是否使用正确的 odbcad 工具创建它?如果您的应用程序是 64 位,则在 C:\Windows\System32 中找到 64 位版本,如果您的应用程序是 32 位,则在 C:\Windows\SysWOW64 中找到 32 位版本?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 2019-06-28
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 2016-10-11
      相关资源
      最近更新 更多