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

Clo*_*one 8 odbc ruby-on-rails unixodbc ruby-on-rails-3

/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)
Run Code Online (Sandbox Code Playgroud)

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

boh*_*ica 11

由于您没有给我们任何工作,因此您的问题没有明确的答案.

但是,可能的原因是:

  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.

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


tuf*_*der 7

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

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

# A typical Microsoft server
[MyServer]
        host = 10.0.0.10\path
        port = 1433
        tds version = 7.0
Run Code Online (Sandbox Code Playgroud)

/etc/odbcinst.ini

[FreeTDS]
Description = FreeTDS
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Run Code Online (Sandbox Code Playgroud)

/etc/odbc.ini

[ServerDSN]
Description = "Some Description"
Driver = FreeTDS
ServerName = MyServer
Server = ip_address
Port = 1433
Database = DBNAME
Run Code Online (Sandbox Code Playgroud)

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

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