【问题标题】:ODBC Driver Manager: Data source name not found and no default driver specifiedODBC 驱动程序管理器:未找到数据源名称且未指定默认驱动程序
【发布时间】:2013-11-11 04:39:31
【问题描述】:

我正在 OSX 上设置 Go、FreeTDS 和 unixODBC。我按照https://code.google.com/p/odbc/wiki/InstallingUnixODBCOnOSX 上的说明进行操作,当我尝试运行测试时,我得到:

[ODBC Driver Manager] Data source name not found and no default driver specified

该端口同时安装了 unixODBC FreeTDS,那么需要什么来解决这个问题?

【问题讨论】:

    标签: macos macports freetds unixodbc


    【解决方案1】:

    在我看来,最好的方法是使用DSN-less configuration — 当您在 ODBC 连接字符串中编码连接到服务器实例所需的全部信息时。这种方法的好处是它要求客户端机器的配置完全为零,除了确保正确安装了FreeTDS ODBC 驱动程序。

    请注意在这种设置中适用于 FreeTDS 的两个警告:

    • 您必须使用Port 连接字符串键。如果您连接到 Microsoft® SQL Server™,则通常是 1433
    • FreeTDS 有一个非常低的默认 TDS protocol 版本——类似于 5.0

      要覆盖它,您必须使用TDS_Version 连接字符串键。将其设置为 auto 或某个合理的值:

      • Microsoft® SQL Server™ 7.0 → 7.0
      • 〃 2000 → 7.1
      • 〃 2005 → 7.2
      • 〃 2008 → 7.3
      • 〃 2012 → 7.4

      看起来 7.2 是 FreeTDS 目前支持的最大 TDS 协议版本,但实际上 7.2 足以处理典型数据类型,包括 varbinary(max)

    【讨论】:

    • 谢谢!我发现我必须在 mysql_test.go 的第 54 行附近添加 params["TDS_Version"] = "auto" 才能使 mssql 测试正常工作。
    【解决方案2】:

    在 Linux 中你使用 odbcinst 来注册数据源,但你需要知道 libtdsodbc.so 在哪里

    在我的 Mac 上,它被放入

    /opt/local/lib/libtdsodbc.so
    

    如果那不是您的安装位置,请执行以下操作以找到其位置:

    sudo find / -name "libtdsodbc.so"
    

    然后创建一个名为“tds.driver.template”的文件,其中包含以下内容:

    [FreeTDS]
    Description = Open source FreeTDS Driver
    Driver =/opt/local/lib/libtdsodbc.so
    

    然后运行

    sudo odbcinst -i -d -f tds.driver.template
    

    【讨论】:

    • tds.driver.template 应该放在哪里?什么路径?
    【解决方案3】:

    我遇到了这个问题,我认为解决它的方法是设置 ODBCSYSINIODBCINI 环境变量(感谢 this 答案)。对于 Mac,您需要将它们设置为以下值:

    export ODBCSYSINI=/Library/ODBC
    export ODBCINI=/Library/ODBC/odbc.ini
    

    【讨论】:

      猜你喜欢
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      • 2011-11-24
      • 2011-06-02
      • 2018-07-10
      • 2011-07-30
      相关资源
      最近更新 更多