如何修复 未找到的数据源名称,并且未指定默认驱动程序(ODBC ::错误)

/local/rvm/gems/ruby-1.9.2-p320/gems/activerecord-sqlserver-adapter-3.2.12/lib/active_record/connection_adapters/sqlserver_adapter.rb:455:in `initialize': IM002 (0) [unixODBC][Driver Manager]Data source name not found, and no default driver specified (ODBC::Error) 

我有我的应用程序的工作副本,但突然间我离开了我的系统,这个错误开始浮出水面。 有人能说出如何解决这个问题吗?

您应该首先设置和配置FreeTDS 。 以下是我的文件中的示例配置,但我确信其他变体也可以使用。 一个区别是我正在使用Django,但下面的结果最终仍然有效,但它使用SQL身份validation比使用Windows身份validation更好。

来自/etc/freetds/freetds.conf (如果服务器名称的DNS未激活,则使用服务器的IP)。

 # A typical Microsoft server [MyServer] host = 10.0.0.10\path port = 1433 tds version = 7.0 

来自/etc/odbcinst.ini

 [FreeTDS] Description = FreeTDS Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so 

来自/etc/odbc.ini

 [ServerDSN] Description = "Some Description" Driver = FreeTDS ServerName = MyServer Server = ip_address Port = 1433 Database = DBNAME 

然后这个命令将我连接到数据库。

tsql -S MyServer -U username@servername -P password

你的问题没有明确的答案,因为你没有给我们任何工作。

但是,可能的原因是:

  1. 在您的用户或系统odbc.ini文件中找不到您指定的DSN运行odbcinst -j以查找这些文件的位置是否有人更改/删除了它们?

  2. 您将ODBCINI env var或ODBCSYSINI env var设置为指向odbc.ini和odbcinst.ini文件位置的unixODBC,现在它们未设置(或更改)。

  3. 有人删除或移动了您的ODBC驱动程序

  4. 您通常以用户A的身份运行代码,现在您以用户B的身份运行它,并且您正在使用用户数据源或设置ODBCINI env var。

…可能是其他人,但如果你给了我们更好的信息,我们就不用猜了。

我不知道你正在使用什么驱动程序,但我猜想更新已改变了一些东西。

你能用isql连接数据源吗?

如果您可以发布/etc/odbc.ini和/etc/odbcinst.ini文件的副本,它会让我看到它尝试连接的内容。

只是一个提示,在我的情况下,无法使用Driver = FreeTDS以及odbc.ini中的两个变量“servername”和“server”。 我只允许“server = ip”和“Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so”,工作正常。