未找到数据源名称?
Posted
技术标签:
【中文标题】未找到数据源名称?【英文标题】:Data Source Name not found? 【发布时间】:2016-08-20 22:05:08 【问题描述】:我正在使用 vb.net 并尝试连接到 Informix 数据库。
系统和服务器都处于 64 位模式,文件 DSN 来自 64 位 ODBC 数据源。
字符串是这样的:DRIVER=IBM INFORMIX ODBC DRIVER (64-bit);UID=userid;PWD=password;DATABASE=database;HOST=host;SERVER=server;SERVICE=9088;PROTOCOL=onsoctcp;CLIENT_LOCALE=en_US.CP1252;DB_LOCALE=en_US.819
它返回此错误:
错误 [IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序。
我已经检查了驱动的名称,它是正确的,并且驱动安装正确,因为我之前使用它没有任何问题。 这是我正在尝试运行的代码,它只是与以前为我工作的数据库的连接:
Imports System.Data.Odbc
Public Class Form1
Dim x As New OdbcConnection
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim constr As String = "DRIVER=IBM INFORMIX ODBC DRIVER (64-bit);UID=uid;PWD=passwd;DATABASE=database;HOST=host;SERVER=server;SERVICE=9088;PROTOCOL=onsoctcp;CLIENT_LOCALE=en_US.CP1252;DB_LOCALE=en_US.819"
Try
x.ConnectionString = constr
x.Open()
x.Close()
Console.WriteLine("Connection Succesful")
Catch ex As Exception
Console.WriteLine("Connection Unsuccesful: " & ex.Message & Environment.NewLine & "Check input data")
End Try
End Sub
End Class
【问题讨论】:
我不知道 VB.NET 等是如何工作的,所以如果这些听起来像是一个失眠症患者的胡言乱语,那就离事实不远了(但我已经堕落了)落后于酒精消费)。听起来 Microsoft ODBC 驱动程序管理器似乎不知道 Informix ODBC 驱动程序在哪里或是什么 — 好像必须以某种方式注册此类驱动程序,并且尚未对 Informix ODBC 驱动程序采取相关步骤。我不知道这是安装失败还是其他原因。我可以拼写 Windows — L、I、N、U、X、……什么意思,那是“错误”? 【参考方案1】:我认为您的应用程序是 64 位的,您安装和配置了 32 位 ODBC 驱动程序,反之亦然。
如果您安装了 Informix 驱动程序,则在 ODBC 驱动程序管理器中配置 DSN(当然要通过成功的连接测试)并尝试使用具有更简单 ConnectionString 的 DSN,例如:
test_odbc('DSN=ifx_test; Uid=username; Pwd=password;')
您还可以查看我的显示可用 ODBC 源的 Python 配方:https://code.activestate.com/recipes/578782-printing-list-of-odbc-data-sources/?in=user-186902
您可以使用 32 位和 64 位 Python 解释器运行它(我更喜欢 odbc
模块附带的 ActiveState),并查看每种环境可用的 DSN。
【讨论】:
【参考方案2】:刚刚解决了。调试器出于某种原因选择在 X86 上工作
【讨论】:
以上是关于未找到数据源名称?的主要内容,如果未能解决你的问题,请参考以下文章
错误:[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序
Python SQLAlchemy:未找到数据源名称且未指定默认驱动程序