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

Leo*_*nid 13 linux configuration documentation unixodbc

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

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

[ODBC Data Sources]
MYDSN = MyDriverName
...
Run Code Online (Sandbox Code Playgroud)

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

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

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

3) inDriverSetupin 有odbcinst.ini什么区别?他们似乎有相同的价值观。这些设置是特定于数据库的还是通用的?

小智 11

我使用FreeTDSonDebianphp驱动网站连接到MS-SQL Server 2005数据库。

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

/etc/odbc.ini

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

[freetds_odbc_connection]
Driver          =       FreeTDS
Description     =       test
Database        =       MyCompanyDb
Server          =       frodo
Readonly        =       Yes
Port            =       1433
Trace           =       No
Run Code Online (Sandbox Code Playgroud)

——

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

——

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

等等等等。

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


Tal*_*Ted 5

如果您只看 Unix 实现,您会得到一些关于 ODBC 如何工作的有趣想法。这些实现都不能 100% 与 Windows 上的参考实现相媲美,后者由ODBC 规范的维护者(即 Microsoft .

Unix 上常见的有两个 ODBC 驱动程序管理器。 iODBC与此问题相关文档在这里,由我的雇主维护和支持。 UnixODBC是另一个,并在其他答案中讨论过。这些意味着彼此和 Windows 实现是等效的 API,因为两者都是标准的平台无关实现。

简单来说,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.iniodbcinst.ini吗?

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

3) inDriverSetupin 有odbcinst.ini什么区别?他们似乎有相同的价值观。这些设置是特定于数据库的还是通用的?

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


小智 2

odbcinst.ini 和来自unixodbc站点的 odbc.ini 之间的简单区别是 google 上的第一个点击:

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