【问题标题】:How to fix the [unixODBC][Driver Manager]Data source name not found, and no default driver specified (ODBC::Error)如何修复 [unixODBC][Driver Manager]Data source name not found, and no default driver specified (ODBC::Error)
【发布时间】:2014-02-09 20:09:26
【问题描述】:
/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)

我有我的应用程序的工作副本,但突然一夜之间我就这样离开了我的系统,这个错误开始出现。谁能告诉我如何解决这个问题?

【问题讨论】:

  • 我不知道您使用的是什么驱动程序,但我猜可能是更新改变了一些事情。您可以使用 isql 连接到数据源吗?如果您可以发布您的 /etc/odbc.ini 和 /etc/odbcinst.ini 文件的副本,它会让我看到它试图连接的内容。
  • 我也遇到了这个问题。你找到解决方案了吗?
  • 是的!我将适配器更改为 dblib 而不是 odbc,它工作正常。

标签: ruby-on-rails ruby-on-rails-3 odbc unixodbc


【解决方案1】:

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

但是,可能的原因是:

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

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

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

  4. 您通常以用户 A 身份运行代码,现在以用户 B 身份运行代码,并且您正在使用用户数据源或设置 ODBCINI 环境变量。

...可能还有其他人,但如果您给我们提供了更好的信息,我们就不必猜测了。

【讨论】:

  • 假设我有第 4 点所述的问题,我应该怎么做才能解决它?
【解决方案2】:

您应该从setting up and configuring FreeTDS 开始。这是我文件中的示例配置,但我确信其他变体也可以。一个区别是我使用的是 Django,但下面的结果最终仍然有效,但它在 SQL 身份验证中的效果比在 Windows 身份验证中要好得多。

来自/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

【讨论】:

    【解决方案3】:

    只是一个提示,在我的情况下,Driver = FreeTDS 以及 odbc.ini 中的两个变量“servername”和“server”是不可能的。我只让“server = ip”和 “驱动程序 = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so”,工作正常。

    【讨论】:

      【解决方案4】:

      请验证以下内容:

      1. 驱动配置文件名为 odbcinst.ini,提供在与 odbc.ini 相同的路径/目录/文件夹中
      2. ODBC 初始化路径是路径 / 目录,而不是文件的实际路径(即 /root/odbc.ini)。请提供同时存在 odbcinst.ini 和 odbc.ini 文件的目录路径。
      3. odbcinst.ini 中定义的 Driver 名称与 odbc.ini 数据源中定义的 Driver 属性相同。
      4. 注意:如果 odbcinst.ini 的驱动程序定义为“[ODBC Driver 13 for SQL Server]”,则验证 odbc.ini 引用“Driver=ODBC Driver 13 for SQL Server”

      这解决了我的问题。

      来源:https://support.microfocus.com/kb/doc.php?id=7017884

      【讨论】:

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