我看到了部分信息、旧信息,但没有什么比我本地的带有简短评论的实际样本文件更好。
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
吗?
Driver
3)和Setup
中有什么区别odbcinst.ini
?它们似乎具有相同的值。这些设置是数据库特定的还是通用的?
答案1
我使用FreeTDS
将驱动的网站Debian
连接php
到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
-
/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基于该驱动程序。
Driver
3)和Setup
中有什么区别odbcinst.ini
?它们似乎具有相同的值。这些设置是数据库特定的还是通用的?
在 中odbcinst.ini
,Driver =
指的是驱动程序库,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