管理員
|
1#
大 中
小 發表於 2009-6-10 01:48 PM 只看該作者
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker - N6 d* ?6 w' C( K
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker / k- B; A; j3 f6 ^7 ~
目錄
) `& |$ M" F" P/ v0 O" Z4 W, S8 K9 W1 |1 如何在Linux上安裝 unixODBC + DBMaker
( L4 L& Z5 E# V, o$ m' z P8 v$ ]$ i6 e! P+ A% j7 |5 ~0 h: }
2 unixODBC介紹6 }$ `6 `+ T2 N' h! A& n
: M2 [, U0 d. z) b* R3 DBMaker簡介# ^! b) M; N" g
3.1 DBMaker在Linux上的安裝
+ S$ y8 ]- q% c. X3 A, m+ B2 _3.2 下載DBMaker 4.2
6 J: Q" U' y7 L$ m8 [3.3 安裝DBMaker$ \4 K, `) w4 a( l, P
3.4 檢視安裝後的環境& D/ P6 X( ?& Q3 K
4 N1 A! h) P* h/ d: b1 ] Q
4 安裝unixODBC
9 B9 q I& K8 b/ B) j+ H4.1 設定unixODBC連接DBMaker 4.2( ?3 c# l$ [: P) U( q4 t' }, r
4.1.1 設定Driver) @+ b* _0 P+ h6 V
4.1.2 設定ODBC DSN1 e5 Z6 o: L0 b, b9 f, {& A
4.1.3 測試連接7 _! S. C y ]3 w/ Z: q
4.2 PHP+unixODBC+DBMaker
; h1 i0 {4 R' Y5 E( L" z
# r$ ]6 E+ v7 l& E3 ?6 B; L5 結語
3 c L+ a9 k8 \: K- _0 s5.1 提供了邏輯與實體資料庫的轉換
+ J& s6 R1 d% W; [. _5.2 連接不同版本的DBMaker
' X0 N; C: D& c# a- S5.3 更多的應用
2 W2 Y$ A4 T) b% ?- g" z! O9 ^
8 w& c) i b* k. x& ?如何在Linux上安裝 unixODBC + DBMaker; g$ ^; e3 D8 W& i* Q5 ?4 c
在Windows中相當好用的ODBC Driver Manager,在Linux中卻一直沒有相同的設定;而現在Linux也有了類似的unixODBC了!在本文中,除了介紹unixODBC的設定外,也會介紹如何透過PHP去連接DBMaker資料庫,及使用unixODBC所帶來的好處。 2 }" D# }/ @0 p3 f8 S5 G
4 o" ]" `5 o/ }$ W. U% U
8 Q; a; j6 y1 h4 O& c
* r0 b V+ h8 \8 s; i8 G7 i3 y
unixODBC介紹
- f, v+ s+ `+ H" c; c2 ]) `ODBC(Open DataBase Connectivity)是一個跨平台的標準介面,從1990年代開始推行以來,一直廣為業界所使用,即使如今有ADO或JDBC等新的標準,在業界中卻仍時常見到這種界面。即是因為推廣的時間久及開放式的架構,讓用戶已經習慣且易於去使用它了。
! J% k) p& r& R" \: \- M
# V5 c7 v, ?) W- X! c在Windows中,透過ODBC Driver Manager,各家資料庫可個自保留自己的Native Driver,然後使用一層轉接接口,將相對應的ODBC Call轉化成自己的Native API Call;但在User的角度而言,這兩者在外觀上是完全相同的,而各家資料庫則需負責將標準的ODBC Call,轉換成自己獨特的Native Call。
9 {- T. B" j* r4 {* M" p |% P
" ?! M3 T, W+ h3 e這樣的使用方式,讓ODBC在推出不久,即廣為用戶所接受,User也都習慣在ODBC Driver Manager中註冊自己的Driver,及設定相關的DSN(Data Source Name)。 $ }/ [& U( D# o# n/ d9 w9 h1 ? y( b
& R/ ]: @5 m5 ^$ }) }
這樣方便的設計,在Linux中,卻一直欠缺相同的機制;使得當要使用各式語言去連接資料庫時,便得依該語言的特性去重build一版可呼叫Native Call的模組(module),而一旦Build完後,若當中需要一些變動(如版本昇級),常常就要重build一次,這樣的設計使得Linux在使用資料庫時,極為不便!!
; N& d! O* M! G" m
7 g2 b" Q, b. E3 Z% K2 e; j有鑑於此,便有一unixODBC的組織嚐試在Linux底下,建立類似ODBC Driver Manager的機制。此一機制與ODBC Driver Manager的功能相仿,便是要能提供Runtime的動態變換功能,讓AP可以透過ODBC Driver Manager,動態地載入不同的資料庫Driver,透過這樣的方式去連接資料庫。 ) p H% ~6 V# n, p
# V1 ^0 l1 Z; A! `, V如今,許多Distribution廠商都已經將unixODBC列為標準安裝的套件,而愈來愈廣為人知,本文即是要安裝unixODBC,並利用PHP去連接DBMaker 4.2資料庫,並由此來看看使用unixODBC所帶來的方便性。有關unixODBC的其他說明,請參閱官方網站。
* O% t- X" q6 U) s- v3 v/ N1 D( ]' ~0 c2 z( R) B
DBMaker簡介) Q A3 _3 b+ K" L8 F
DBMaker為一跨平台的大型關聯式資料庫,符合SQL 99標準,擁有開放式架構,在處理多媒體、全文檢索上擁有強大的搜尋性能;有關DBMaker Engine部份的介紹,請參閱DBMaker的其他相關文章,本文不再贅述,而只著重在使用unixODBC方式的介紹。
. `* {" e7 c% v9 @7 S/ f% s9 k+ h% r, u
首先DBMaker是一跨平台的大型資料庫,故在Windows、Linux上的安裝與使用幾乎是一致的。若您尚未使用過DBMaker,我們簡單介紹如何在Linux上安裝DBMaker,與其他資料庫相較,您會發現在Linux安裝DBMaker是一件相當輕鬆愉快的工作。
/ G8 O& s( g9 V: g
8 F5 ^4 j* e& ]/ ?! aDBMaker在Linux上的安裝3 N% l, F3 u7 v( E8 F! @
加入dbmaker的user 首先您須在Linux底下,加入dbmaker這個user,不要忘記請一併將密碼設定好:
# h' r* {5 X/ g5 ^5 O3 s7 S, v# B, }8 U7 J t5 ^$ L1 z
( S1 v/ a( l% e* d) ~[root@support root]# adduser dbmaker1 h# G+ n) M) Q
[root@support root]# passwd dbmaker9 l" Y. t- c7 R4 P
Changing password for user dbmaker.# R: w; F; ^& L# q# c
New password: 4 \4 d0 ]: R8 a: _& X; i) Y3 i) m
Retype new password:
. x7 V2 ^0 T8 v x4 G Hpasswd: all authentication tokens updated successfully. ^) U: A, n& G$ Z9 y( ^# G# V
' j& M7 P3 g$ ~9 f, @) R
一般說來,除非另行指定,否則dbmaker的家目錄會放在/home/dbmaker底下。 6 q3 \2 E5 `& d: q. z3 V4 G
: V n) M! Z' E5 n8 F下載DBMaker 4.2" P; `' P! A# r5 f O) P' z. R" X
接下來,請至DBMaker的官方網站下載區,去下載最新的DBMaker 4.2版本,將其放在適當的地方。(本文將其放置在/tmp底下) 3 t1 l: b/ F0 v
( {( w* l% ]& a6 |2 q[root@support tmp]# pwd
i3 m0 _1 q0 Z0 `9 ?! Z/tmp8 ?! }' F9 v+ J" E
[root@support tmp]# ls -al dbm*
8 C; D6 b- q, ^( j% [3 f/ V& R-rwxr--r-- 1 alen alen 34649895 11§ 23 14:48 dbmaker-4.2.0-Linux2.x86.tar.gz
9 Q" K% g% ]/ n$ R+ g8 L% m[root@support tmp]# tar zxvof dbmaker-4.2.0-Linux2.x86.tar.gz <==解壓縮
, i7 ~2 ~9 I+ {0 @6 O& N0 fdm420.tar$ ]* Q# S8 E& Z! A
setup
' }8 @& Q: ?) r! o3 P9 I8 c6 p; s8 O2 ^9 K9 B! f: _( L: p
安裝DBMaker
5 ]0 t& C% ^7 T接下來,請切換至dbmaker這個user,並執行setup程式,為了能正確執行setup,請將setup程式改變模式成「可執行」。
- d, y% K! c: ~9 r5 P
- i/ |4 W' i. X7 W* q3 t) b* X8 `: g9 I; e9 X$ b" F. r$ { T
[root@support tmp]# chmod a+x setup <==切換成可執行
: @1 _' O3 l2 r' B* |* M3 t[root@support tmp]# su dbmaker <==切換成dbmaker後,進行安裝9 G; y) x$ m9 n
[dbmaker@support tmp]$ ./setup
( d/ P# ` C4 H
# i( C0 C: K2 `1 y0 L( L; U8 n$ z1 _1 c4 D7 ?6 t' N
==============================================================
8 D0 B* U* S; b& |# n; ?9 |DBMaker Database Management System Installation0 m" P! @3 h- @
For DBMaker Release 4.2.09 g3 L4 f5 L4 d
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.* z2 F2 P: A) H8 x$ r/ ^4 _
==============================================================1 z; q, q2 K& d
Install Components:" c6 | T3 ~7 g: r" f
[A] DBMaker Server .............. (yes) Language: [ Western, Big5 ]
7 m, Z( H6 o- l$ b( U[B] DBMaker Client ............... (yes)" `+ f" B3 u( N( h$ A
[C] Sample Programs............... (yes)
8 ~0 ]) _, {) R; F$ u! z! I1 r[D] Tutorial Database.............. (no). S# p/ r& _ A' }
[E] Documentation ................. (no)
) [9 m* |1 i g3 x* R+ [, XInstall Path:. c/ y& p; h @/ Z5 ] E {1 M& f
DBMaker Home directory: /home/dbmaker0 K& d% h! [( S/ R3 N
[Y] Start Install [N] Quit
C+ m( Q" c( x+ A' f2 [Please press [ A B C D E Y N ] Y <==為簡單計,請直接使用「Y」進行安裝
: I! b4 ~1 N: x; m- @% W. j _9 O
當您按下Start Install後,DBMaker就開始安裝,約1-3分鐘內,安裝便可完成,可說是又快速、又方便呢!. Y2 E' T \: j
[: n, f1 J) C) |5 V$ J
檢視安裝後的環境
9 h( e' {7 [, j" `在上述安裝完DBMaker後,DBMaker會自動產生一個範例資料庫-DBSample4,我們可以用下面的方法來啟動這個資料庫:
# g% y, y+ J5 E7 [! j4 N
! K e) X6 z M3 P--------------------------------------------------------------------------------
" S6 z" t6 l. V5 g8 v[dbmaker@support bin]$ cd /home/dbmaker/4.2/bin <=切換至命令目錄,注意此時使用的user為dbmaker!
' d, k( }5 {8 g6 u/ s6 d+ h[dbmaker@support bin]$ ./dmserver dbsample4 <= 使用此命令來啟動資料庫3 z8 {0 u" i! h5 \& `7 B
DBMaker 4.2.0 (#4721, 20040924)
! N8 n2 W4 |/ u- H- \; W3 L% tCopyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
* V' a+ p- f5 w* Z3 QSQL Server bound to port 2450 <==已在埠位2450上準備接收request
! |; m' a% E6 \9 v/ V. ^Database Server is running in the background mode.( l5 x5 ]5 z$ m: q9 H. R
Process ID = 15668. T8 k1 ?! y/ F
" z9 B; @" s" ]8 f4 L, m
這樣資料庫就啟動了,您可以參考DBMaker的其他手冊,使用其他工具來操作這個資料庫;(有關資料庫服務的埠位、名稱等設定,都記錄在/home/dbmaker/data/dmconfig.ini文檔中,有關此文檔中的相關設定,也請參考DBMaker線上手冊)。
, q+ l; ?: ? E3 T0 w# C在安裝完DBMaker後,應該就可以在/home/dbmaker/4.2/lib/so中,找到DBMaker的odbc native driver。9 x9 }. a; v0 D& W& t
: v c7 r; f; Z w[dbmaker@support bin]$ ls /home/dbmaker/4.2/lib/so/
* D. x2 A! i& c0 G& @1 ]libdmapic.so libdmjdbc42.so libdmxtt.so libiconv.so.2.2.06 B0 N4 z$ l- b4 p
libdmapis.so libdmjsvrut.so libexpat.so libxerces-c.so
/ n& L0 S) @# i% f8 B5 w- {libdmdttut.so libdmudf.so libiconv.so libxerces-c.so.215 J* K6 |3 `2 Y% d% g0 `7 c
libdmjdbaut.so libdmxtm.so libiconv.so.2 libxerces-c.so.21.0# H& K; f8 q" R& C
% K/ a0 G2 |. X1 @( v
其中的dmapic.so,便是DBMaker的native driver;由於DBMaker在開發之初,便是使用ODBC的開發介面,所以DBMaker的Native Driver,便是一符合ODBC API標準的Native Driver;而不像有些資料庫廠商,事實上還是需要另一層薄薄的轉換接口,才能將ODBC API轉成實際的Native Driver API。1 c8 j6 g4 t5 R" {
* ]& g$ W4 M) Z" C7 U0 n* X6 R安裝unixODBC
- u7 {& N+ Z) B4 m接下來談到本文的主角-unixODBC,由於多數人已習慣RedHat的rpm安裝方式,故本文會使用rpm來安裝,至於若要自行build者,請參閱unixODBC的官方網站。( B1 c- M5 L9 t& y: w0 F# l* E
首先至官方網站中取得最新的unixODBC package,本文使用的是2.2.3-6的版本。+ O8 p# f9 G0 f; g J* J, |
接著,我們使用rpm將unixODBC安裝上去:
" [5 M2 ^. Z8 K0 y4 Y2 {7 r { Q
+ u7 W: o$ L) K/ J. a% u2 w/ b[root@support tmp]# rpm -ihv unixODBC-2.2.3-6.i386.rpm - C0 V5 r- ^! q
warning: unixODBC-2.2.3-6.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
# `3 K1 l; A1 R9 d. z% _Preparing... ########################################### [100%]: Y3 }* l5 _9 L% z3 B. b6 T
[root@support RPMS]# rpm -ql unixODBC|more<==檢查一下到底安裝了那些檔案!! {, z% ?" o/ Z; A% J
/etc/odbc.ini <==這是安裝DSN的檔案,本文的重點) p5 f! J- u- k- o1 V
/etc/odbcinst.ini <==這是Driver Manager所放置的Driver設定區,亦為本文重點1 l" X4 q, m0 ^: n/ H
/usr/bin/dltest$ H8 |% E: f9 z* x7 B) ?$ M3 c
/usr/bin/isql
/ e& V% }# `, O" k2 V& r/usr/bin/iusql/ {& v$ E5 G* h% e. e' P1 ~
/usr/bin/odbcinst( w# ]$ X J7 h, O; n
/usr/bin/odbctest' D" S4 G6 Q, B; ~9 c
/usr/lib/libboundparam.so.1+ U2 C. t! M7 w" e
/usr/lib/libboundparam.so.1.0.0) M3 L, K/ A# P/ ]. D3 G
/usr/lib/libesoobS.so.1
. G( s9 C/ h( `4 {$ }! D/usr/lib/libesoobS.so.1.0.0
; D0 `3 b, ~4 `' J4 A+ S9 T J/usr/lib/libgtrtst.so.1
9 b# _6 }+ `4 M4 M& K9 _" a* f/usr/lib/libgtrtst.so.1.0.07 B! b' n! @' ~; h+ s
/usr/lib/libnn.so.1/ S+ l) ]$ d6 n" [# S; d
/usr/lib/libnn.so.1.0.0
0 a% `: |) x8 h* ?! {2 z/usr/lib/libodbc.so$ k( Q V+ S! y" S/ y6 _
/usr/lib/libodbc.so.1
9 C' n% ^3 L8 C/usr/lib/libodbc.so.1.0.04 `6 F- u( _6 \; x, U
............* k2 W# d& o4 C' L3 C
7 p. L# A: i$ i! r* g
+ S& E8 Y! W' H
4 S" k& Y/ H& V! Q3 R0 U設定unixODBC連接DBMaker 4.2
+ C5 t3 m7 [) m& L: G3 m* B A如上所述,我們接下來就是要將unixODBC與DBMaker的Driver串接在一起,如同在Windows上,去設定Driver Manager一樣。# B; L4 J# C1 N- D/ c5 i! V
* B C# N2 @: _9 S# w9 ?
設定Driver6 ~& {4 m; c5 {9 H* n1 p
在Windows的Driver Manager中,我們所使用的Driver,事實上也是需先向Driver Manager登記的,這個動作由於多數是由資料庫廠商的安裝程式作掉,所以User可能完全不知覺。
/ c+ H' |' T/ Q但在unixODBC中,則必須由使用者自己來進行註冊Driver的動作,這個登錄的動作,即是要在/etc/odbcinst.ini中加上DBMaker相關Driver的資訊,我們首先打開這個檔案,並加上下面的幾行:% m5 {! T2 I8 P
6 K: ?! s7 h# n[root@support RPMS]# more /etc/odbcinst.ini
( v' }0 S1 z3 z8 s4 e# Example driver definitinions
) S9 x+ {# Z3 |: [+ d#
8 V( K+ n1 M- m0 n* w. B& f: B/ O#7 T$ w, O" E8 |6 v
" [' [7 t- ~. }" ~. `" m: B4 r# Included in the unixODBC package+ F4 a6 [) }) t. [! ~
[PostgreSQL]; m; T( S+ `9 X$ h
Description = ODBC for PostgreSQL% t) `. V+ ~; O! F1 }) G0 z
Driver = /usr/lib/libodbcpsql.so$ L$ f1 J! Q9 Y, ]
Setup = /usr/lib/libodbcpsqlS.so% a6 X: U/ ~7 M0 {9 j
FileUsage = 1
. C4 g3 C$ R m; g* H+ K& x- F* ?7 G....
' `# \+ A0 x6 x[DBMaker 4.2 Driver] <==這就是您向unixODBC註冊的Driver名稱,可自行定義8 n4 d* \( ?) ?" b. i& W/ A
Description = ODBC for DBMaker 4.24 c) ~' h/ y4 m# x. [& }
Driver = /home/dbmaker/4.2/lib/so/libdmapic.so <==必須登記您環境中,DBMaker所使用的Driver完整路徑
) Y) ~" V5 c% Q8 V( h$ h( j& y#Setup = /usr/lib/libodbcdbmakerS.so
$ Z3 s$ a w% x' P RFileUsage = 0, \2 C# k6 Q6 [6 n4 N
) I! V5 J3 f; i4 g( T- q9 |2 H2 k
3 R+ t4 p+ B9 Q' I1 V6 `6 n
在設定Windows的Driver Manager時,在加上一個新的DSN時,資料庫廠商通常都提供一個安裝程式,讓使用者可以登記如Server位置、Port Number、須要使用什麼認證…等等。這個畫面就是上述的「Setup」,由於DBMaker目前在unixODBC中並未提供安裝畫面,故須暫時將它關閉;待之後的版本提供後,再把它開啟。5 y1 s* k$ K* G) G( C, V
M0 `* k7 ^% }( G
設定ODBC DSN
+ I8 T: N4 N% G2 ]接下來便是設定Data Source Name了(DSN),在Windows時,有所謂的System DSN及User DSN,其實主要的差別便是System DSN是可為所有User所存取,而User DSN則只能為某特定user存取;當login成另一位user時,便看不到原來User登錄的DSN了!
3 S6 X% F H8 z而在unixODBC中,則是使用不同位置的檔案,來存放System DSN及User DSN,在我們的環境中,System DSN會放在/etc/odbc.ini,而User DSN則會放在個別User的家目錄/.odbc.ini。
3 i3 `) s5 Q8 M; J由於我們要使用Web的PHP來連接DBMaker,所以要設定System DSN,以下是我們所放置的內容:. ] t' T# z& g
- C; D- R9 H2 M$ a
[dbsample4]( ?6 g- H; n6 k. s& W1 z
Description = Database for dbsample45 n1 D; f) K/ i4 w7 l
Driver = DBMaker 4.2 Driver <==注意,此處須與之前Driver設定的名稱相同
8 O* A8 v: z, I$ P% PDatabase = dbsample4 <== 資料庫名稱2 C8 }1 g5 x5 s
Host = localhost <== server所在位置
, l. g; A! L' U3 ]Port = 2450 <== 埠位置& U% c/ Z5 m% J: z
User = SYSADM <==使用名稱(DBMaker預設所使用的管理者名稱)* ^6 k9 _. I. s7 {) J* o. y1 O
Password = <==使用密碼 (DBMaker預設所使用的管理者密碼)# k, _. @8 O7 A* |9 O& p- ?
當然您可以使用不同的帳號/密碼登入,但此處為方便,使用DBMaker所預設建立的管理者帳號SYSADM,及預設的密碼(空白)) y' l, C6 Y% X: w" s
9 N+ M& P. f! o2 D測試連接% ~$ u" }, M1 |; D8 {# J F, Q
接下來,我們使用unixODBC所附的isql來連接dbsample4的資料庫,isql的標準語法為:
6 n* J3 O5 H* X' P3 e) ?3 B
4 t2 w3 Y. e S8 q! hisql DSN [UID [PWD]] [options]* V2 i2 J S; `% z) e
我們直接用下方命令來連接資料庫:
" v4 u2 u; k r7 J$ W) P s) c9 S6 M: R% h
[root@support RPMS]# isql dbsample4 sysadm
. O3 q0 c+ {* W j7 E4 U# n
0 ^# j: u; w! h7 j% w3 ?+---------------------------------------+
" ~3 C) Z( ]/ e0 |8 l# ?3 H
/ |* n; k/ N. v5 V- x4 u6 ?4 O% h |+ v| Connected! |
( H0 d6 A7 P* e) U* H# O* }$ i% H0 D
K: ^+ v* _. u$ B| |
. ~& b2 K9 ?1 n& [- F
4 B$ g2 C6 g% S4 d! Y| sql-statement |
' @; O8 Y5 i& l1 r
% m, u6 j# M2 p, u! C" }% c( o| help [tablename] |
% N h$ n# Y6 e1 |- p, l0 G& }0 V# u3 P( X! t9 {5 z, B7 G; J
| quit |- s& [" g% O) q& m4 ~ O
9 v) ^% A+ Q7 F6 I) g! S5 e1 i| |
; o3 Q0 h0 Q9 r% N# T$ d8 r$ w# Y3 t1 Y% V7 ]- ]
+---------------------------------------+
/ M4 o, ]9 A* M L
) H* @. u- X4 ]& DSQL> select * from SYSTABLE;
+ N( k9 g0 }! E$ f; c% J5 f; z
6 X1 R' O4 g5 }& P.......
' U ^ e$ Z2 a" h1 p- g! \' | S0 m7 i, B6 B' G' m% i% F
+ |. x- x( F& w" y" ^這樣便可確認我們的確能從unixODBC中,正確連接到DBMaker sample4的資料庫!
6 g0 C0 }, y9 |1 p$ `
, [" t2 r! j# T/ x: vPHP+unixODBC+DBMaker
( _" P( U& p+ e3 F' \# B7 v7 Z' G現在我們能用unixODBC來連接DBMaker了,剩下來的工作就簡單多了,首先我們先確認我們的php是能夠呼叫odbc function的,先用測試程式看看php是否包含了odbc呼叫:( K) G- o$ x% h
=>存成phptest.php
1 e: T+ d1 \: J- w- p然後在Browser底下,查閱Configure Command,是否有--with-unixODBC=shared的文字!: t" l$ d. T1 L h$ C
接著再查閱網頁中的ODBC該節,是否顯示ODBC Library為unixODBC!& v3 m; d$ n/ m* [. l
若是以上都無誤的話,您可以撰寫以下的程式php_odbc.php:8 w* N% Q2 \4 z/ M z
5 D, g4 Z+ n; S4 @
很有可能(最少筆者就碰到),此時卻顯示了無法認識odbc function call;這個問題在筆者這邊碰到時,先查了一下php裝設了那些rpm,後來便發現少裝了php-odbc這個套件,不知道是不是Distribution的問題(筆者裝的是RedHat 9.0)。當正確安裝了 php-odbc-4.2.2-17.i386.rpm後,再執行上述程式,便沒有發現錯誤了!
2 B# u$ y1 r' W$ Q4 ?8 `有關php的設定及它與apache的設定,網站上另有一篇專文,請自行參閱。
0 {* t9 x p- f) u3 |( x至此已經大功告成,user可以自行撰寫幾個簡單的測試程式,測試看看是否可以正確使用DBMaker,開始撰寫自己的網頁囉~# [- O3 I/ K4 E8 u/ K
' p8 T7 N2 f5 k: N& ~# g/ T! Z+ y
結語
7 `1 o, N g% T( b" ^使用至今,我們發現unixODBC至少提供了幾個好處:
+ J+ i* F3 [! C提供了Logical DSN對應到實體的Database Name
7 R' {$ L3 c, c' J2 l' h可同時連接不同版本的DBMaker
- \& J7 u3 \/ k3 w2 o: v
1 u i7 ^" Q2 t提供了邏輯與實體資料庫的轉換
! z0 y% M5 d* y1 ~這也是為何Windows ODBC Driver Manager為何歷久不衰的原因;透過odbc.ini的設定,將邏輯的資料庫名稱,對應到實際的driver及database name。這樣的設定,也一併解決了下面要說的版本問題
' c5 O! y' z5 [- w7 U1 d) f1 b2 U1 z4 K+ Z' o' T
連接不同版本的DBMaker. Q) b0 H; P% L* Z2 [
這是筆者最喜歡的一點!在早期build PHP時,必須要使用下面的方式來生成:
( f: Y- m& e, ~ |; E- R0 N# M: C./configure --with-apxs=/usr/sbin/apxs --with-dbmaker=/home/dbmaker/4.2 --enable-track-vars0 C2 I) B1 a. |8 V0 m0 W* U% f2 O
在這樣的設定中,其實已經把DBMaker的版本給設死在面,所build出來的libphp4.so,就是已經設死成只能連接DBMaker 4.2版本。
% ~% P: A: Y K! o$ @% D若是今天想寫一支php程式能同時連接3.7及4.2時,那要怎麼辦呢?這就慘了,因為在這樣的架構下,是沒有辦法作到的。7 w6 t6 F7 H x2 v2 p
所以筆者有些機械的php就固定只能連3.7,有些機械就是放4.0;若要跨兩個版本的Database,就只能靠別的方法了。, P* I* M, W6 F1 i V) |
但unixODBC提供了這一層轉換方式,讓libphp4.so不是設死只能連DBMaker 4.2,而是能動態存取外在的ini檔案後,再去連接DBMaker不同版本的so。這樣一來,筆者就能在同一支程式,靠著不同版本在odbc.ini中的設定,而能同時存取了!
1 t7 Q- X9 K f0 O; c" Q
, V8 ?9 @& U1 d1 A Y更多的應用. h( w) a& B, e0 y
目前unixODBC已逐漸廣為人所接受,不單PHP,包括Perl、Python甚至Java-ODBC Bridge都能使用。如此一來,所有的資料源都可以集中交由unixODBC來管理,這個發展過程,在Windows Driver Manager發展之時也都有過,而它顯而易見的好處,造成了Driver Manager及ODBC的風行!而也希望透過這篇文章,幫助使用者瞭解它,學習它,使用它,最後能真正地喜歡它!
|