寻找 Linux 上 odbc.ini 和 odbcinst.ini 文件的良好文档

寻找 Linux 上 odbc.ini 和 odbcinst.ini 文件的良好文档

我看到了部分信息、旧信息,但没有什么比我本地的带有简短评论的实际样本文件更好。

odbc.ini我需要了解和之间的确切关系odbcinst.ini。从表面上看,这很明显——在文件顶部odbc.ini有一个部分如下:

[ODBC Data Sources]
MYDSN = MyDriverName
...

但是,我不确定是否可以在驱动程序或 DSN 部分进行设置。

1) 我在两个文件中都有一行Driver = /path/to/file/.so,但值有时会有所不同。这有意义吗?如果有意义,那哪个占上风?

2) 是否odbcinst.ini有类似 JavaScript 的“原型” odbc.ini?换句话说,如果我要创建多个具有通用设置的 DSN,我可以将通用设置从odbc.ini提升到odbcinst.ini吗?

Driver3)和Setup中有什么区别odbcinst.ini?它们似乎具有相同的值。这些设置是数据库特定的还是通用的?

答案1

我使用FreeTDS将驱动的网站Debian连接phpMS-SQL Server 2005数据库。

我可以对配置文件给出的解释:

/etc/odbc.ini

保存连接到数据库的处理程序(例如)中引用的实例php(见下面的示例)。配置定义了它需要连接到的服务器。

[freetds_odbc_connection]
Driver          =       FreeTDS
Description     =       test
Database        =       MyCompanyDb
Server          =       frodo
Readonly        =       Yes
Port            =       1433
Trace           =       No

-

/etc/odbcinst.ini

Driver保存中的部分的配置odbc.ini

[FreeTDS]
Description     = TDS connection
Driver          = /usr/lib/odbc/libtdsodbc.so
Setup           = /usr/lib/odbc/libtdsS.so
UsageCount      = 1
FileUsage       = 1
Trace           = Yes
TraceFile       = /tmp/odbcinst_tr

-

show-companies.php

示例php代码演示我如何设置和使用连接。

  $host="freetds_odbc_connection";
  $user="freetds";
  $password="secretpassword";
  $conn_id = odbc_connect($host, $user ,$password) or die (odbc_errormsg());

  $sql_companies =  "SELECT * from AMGR_Client_Tbl WHERE Record_Type='1'";

  $query_companies = odbc_exec($conn_id, $sql_companies);
  while (odbc_fetch_row($query_companies))
  {
    $client_id     = odbc_result($query_companies, 6);
    $company_name  = odbc_result($query_companies, 9);
  }

等等。等等。

我确信还有许多其他变量可以设置和使用,但这是我能对您所询问的文件给出的最简单的解释。

答案2

如果您只查看 Unix 实现,您会对 ODBC 的工作方式有一些有趣的想法。这些实现都不能 100% 地与 Windows 上的参考实现相媲美,后者由ODBC 规范,即 Microsoft

Unix 上常见的 ODBC 驱动程序管理器有两种。 数据库,谁的与该问题相关的文档在这里,由我的雇主维护和支持。 UnixODBC是另一个,在其他答案中也讨论过。它们应该是彼此等同的 API,并且等同于 Windows 实现,因为它们都是与平台无关的标准实现。

简单来说,odbcinst.ini是环境中 ODBC 驱动程序的注册表和配置文件,而odbc.ini是 ODBC DSN(数据源名称)的注册表和配置文件,通常基于在另一个环境中注册的驱动程序。

您有几个具体的问题……

1) 我在两个文件中都有一行Driver = /path/to/file/.so,但值有时会有所不同。这有意义吗?如果有意义,那哪个占上风?

当两个文件都以路径表示时, 通常在两个文件中应该Driver = /path/to/file.so相同。在 中odbc.ini,此条目可能改为Driver = {name of driver}名称在 中索引的位置odbcinst.ini。一般而言,如果存在odbc.ini冲突设置, 中的设置优先于中的设置。odbcinst.ini

2) 是否odbcinst.ini有类似 JavaScript 的“原型” odbc.ini?换句话说,如果我要创建多个具有通用设置的 DSN,我可以将通用设置从odbc.ini提升到odbcinst.ini吗?

不,odbcinst.ini不是这样的“原型”。odbcinst.ini设置与司机,但不是DSN基于该驱动程序。

Driver3)和Setup中有什么区别odbcinst.ini?它们似乎具有相同的值。这些设置是数据库特定的还是通用的?

在 中odbcinst.iniDriver =指的是驱动程序库,Setup =指的是设置库。后者是完全可选的,当它存在时,可以在数据连接期间使用,但不必如此;它主要供 ODBC 管理员在“设置”此类连接时使用,以保存为 DSN。有时,这些库位于同一个物理文件中,但它们不必如此,例如,通常不在 OS X 环境中。

答案3

好的,odbcinst.ini 和 odbc.ini 之间的简单区别来自unixodbcgoogle 上第一个搜索结果为:

系统文件 odbcinst.ini 包含所有用户可用的 ODBC 驱动程序信息,而 odbc.ini 文件包含所有用户可用的 DSN 信息。这些“系统 DSN”对于可能不以真实用户身份运行的 Web 服务器等应用程序非常有用,因此不会有包含 .odbc.ini 文件的主目录。

答案4

这些手册应该是这里Manuals然后点击User Manual)。 Administrator Manual但不幸的是,和的链接Programmer Manual已损坏。(我已报告此问题并被告知将予以修复。)

所以现在...

丢失的手册由从以下位置下载 unixODBC-2.3.4.tar.gzhttp://www.unixodbc.org/然后使用档案管理器(或类似程序)打开它并查看这三个手册:

/doc/AdministratorManual/index.html
/doc/ProgrammerManual/index.html
/doc/ProgrammerManual/Tutorial/index.html

相关内容