[linux]unixODBC的安裝配置說明


什么是unixODBC:

ODBC(Open Database Connect)是由Microsoft 公司於1991 年提出的一個開放的,用於訪問數據庫的統一接口規范。

unixODBC的是為非Window平台的系統實現ODBC規范接口的中間件。

unixODBC的安裝

有GUI的用戶可以使用ODBCConfig tool 安裝。教程在官網文檔有詳細介紹,不再贅述。地址:http://www.unixodbc.org/doc/UserManual/

 以下介紹沒有GUI界面的安裝說明,同樣也是來自官方文檔,地址:http://www.unixodbc.org/odbcinst.html

我通過 apt-get install unixODBC 進行安裝,安裝完成后對odbcinst.ini和odbc.ini文件進行配置修改。

自己編譯或自己解壓安裝的需要自行摸索,安裝完成后對odbcinst.ini和odbc.ini文件的修改是一致的。

 

 為了更清楚了解配置的過程,需要先了解一些背景信息:

什么是ini文件:

ODBC首次出現在Window 3.0中。當時Windows使用.ini文件去包含配置信息。

ini文件的文本格式為:

[section1]

entry1 = value

entry2 = value

[section2]

entry1 = value

entry2 = value

...

 

雖然后來Windows NT將這些ini文件替換成了注冊表的形式,但是ODBC中用於訪問這些配置信息的API仍然保持不變。

unixODBC仍然保留了用ini存儲配置信息的習慣。

系統 vs 用戶

ODBC會區分兩種類型的ini文件。

系統ini文件能被所有用戶訪問,但是不能修改;用戶ini文件則是針對特定用戶的,並且能被該特定用戶修改。

ODBC的系統文件是odbcinst.ini和odbc.ini。用戶文件是~/.odbc.ini(注意開頭.號),並包含在各自用戶的home目錄下。

系統文件odbcinst.ini包含對所有用戶可訪問的ODBC驅動信息;odbc.ini文件包含所有用戶可訪問的DSN信息。這些'系統DSN'對於如web服務器這樣,不以真實用戶身份運行的應用十分有用,因為這些程序不會有自己的home目錄來存放.odbc.ini文件。

舉一個含ODBC支持的Apache和PHP的例子。當http server第一次啟動時,它通過root調用SQLAllocEnv。然后它再切換到指定用戶去調用SQLConnect。此時如果DSN不是一個系統DSN,就會出現fails。

FILEDSN

ODBC 3 還有第三種類型的DSN, file DSN。目前unixODBC還不支持FILEDSN。略。

文件路徑

odbcinst.ini和odbc.ini文件默認放在/usr/local/etc下面。但由於現在能通過指定配置腳本的prefix來指定文件路徑,所以如果在configure的時候指定的了prefix,則文件路徑在{prefix}/etc下面

文件內容

odbcinst.ini

以下是一個示例:

[PostgreSQL]
Description     = PostgreSQL driver for Linux & Win32
Driver          = /usr/local/lib/libodbcpsql.so
Setup           = /usr/local/lib/libodbcpsqlS.so
FileUsage       = 1

[PostgreSQL]是driver的名字,這里表明這是一個PostgreSQL driver。
Driver 和Setup路徑指出ODBC driver和setup libs 的位置。
當我們使用ODBCConfig工具添加新的DSN時,會調用這個setup lib。但是由於現在我們是非GUI安裝,所以其實可以不用管他。
Driver路徑最為關鍵。當DSN調用SQLConnect或SQLDriverConnect時,driver manager會動態載入這些庫。若這里指定到了錯誤的Driver,則DSN無法工作。
FileUsage由odbcinst 命令自己添加,所以如果你使用的是文本編輯器,則需要自己添加。
Threads
由於1.6版本之后添加了多線程支持,所以如果driver manager構建了多線程支持,則可以配置:

[PostgreSQL]
Description     = PostgreSQL driver for Linux & Win32
Driver          = /usr/local/lib/libodbcpsql.so
Setup           = /usr/local/lib/libodbcpsqlS.so
Threading     = 2

這項配置改變了默認的線程序列化等級(thread serialization level).

[.]odbc.ini
odbc.ini的內容要復雜一些,主要是因為不同的driver需要不同的配置項。
最后列出了支持所有driver的配置項,以供參考。這些配置項可以通過odbcinst命令,或文本編輯器來添加。
對應上面例子中的driver的配置項:

[PostgreSQL]
Description         = Test to Postgres
Driver              = PostgreSQL
Trace               = Yes
TraceFile           = sql.log
Database            = nick
Servername          = localhost
UserName            =
Password            =
Port                = 5432
Protocol            = 6.4
ReadOnly            = No
RowVersioning       = No
ShowSystemTables    = No
ShowOidColumn       = No
FakeOidIndex        = No
ConnSettings        =

Driver項用於匹配odbcinst.ini的[section]部分。不過也可以直接指向driver路徑,只是可能需要注意路徑訪問權限的問題。

其他數據庫的配置項例子:

Templates

The templates for the included drivers are...

Postgress

 
        
[PostgreSQL]
Description         = Test to Postgres
Driver              = PostgreSQL
Trace               = Yes
TraceFile           = sql.log
Database            = nick
Servername          = localhost
UserName            =
Password            =
Port                = 5432
Protocol            = 6.4
ReadOnly            = No
RowVersioning       = No
ShowSystemTables    = No
ShowOidColumn       = No
FakeOidIndex        = No
ConnSettings        =
 
        

Mini SQL

 
        
[Mini SQL]
Description     = MiniSQL
Driver          = MiniSQL
Trace           = No
TraceFile       =
Host            = localhost
Database        =
ConfigFile      =
 
        

MySQL

 
        
[MySQL-test]
Description     = MySQL test database
Trace       = Off
TraceFile   = stderr
Driver      = MySQL
SERVER      = 192.168.1.26
USER        = pharvey
PASSWORD    =
PORT        = 3306
DATABASE    = test
 
        

NNTP driver

 
        
[nntp Data Source]
Description     = nntp Driver
Driver          = nntp Driver
Trace           = No
TraceFile       =
Host            = localhost
Database        =
Port            =
 
        

FreeTDS driver

 
        
Driver = TDS
Description = Northwind sample database
Trace = No
Server = 192.168.1.25
Database = Northwind
UID = sa
 
        

Sybase SQL Anywhere 5.0

Thanks Greg.
[Sybase SQL Anywhere 5.0]
Driver=Sybase SQL Anywhere 5.0
Description=Sybase SQL Anywhere 5.0 ODBC Driver
Userid=dba
Password=sql
DatabaseFile=sademo.db
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM