|
管理員
  
|
1#
大 中
小 發表於 2009-6-10 01:48 PM 只看該作者
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
* ]6 U& V( G6 U7 Q技術專區 - 如何在Linux上安裝 unixODBC + DBMaker 2 z9 x/ P7 [8 G0 Z. R$ e
目錄
7 m4 C$ V% p4 g# y7 U" e! w( N1 如何在Linux上安裝 unixODBC + DBMaker
* F4 @' S0 w3 B* j# M; ~ ?3 s) v6 F- Q( z6 F
2 unixODBC介紹
& i6 A {1 A0 g& w
* N( f# d2 ?% o6 r, o) H8 z3 DBMaker簡介& o8 A) X, W( Y9 ]
3.1 DBMaker在Linux上的安裝
1 r8 v' L f9 \4 r3.2 下載DBMaker 4.2
- _" C" ~- [3 h. d) ?8 d3.3 安裝DBMaker
4 ~# v: H. d; ~0 E! e, S2 n3.4 檢視安裝後的環境
" c2 S# \7 z, Z: q+ a; B
" R; V, {% F7 Y% q$ K" @2 u" h4 安裝unixODBC
# o6 E7 l6 G# [3 v4.1 設定unixODBC連接DBMaker 4.2& @) A9 [% p9 [
4.1.1 設定Driver
: ^, N" l6 Q* Z j+ x2 ] 4.1.2 設定ODBC DSN
U! ^; @- b: I 4.1.3 測試連接% ~7 K- e e# w3 R. y) S
4.2 PHP+unixODBC+DBMaker" @3 Z$ l* E8 ~1 y
8 }3 {* }) K) T3 n# G9 f. \8 Z; e5 結語
4 [8 a- M% ]3 o" l/ g7 d8 m! ^8 J5.1 提供了邏輯與實體資料庫的轉換
C- ^9 j* j5 ^$ V9 z5.2 連接不同版本的DBMaker0 `' Q8 e0 T( A7 k, P0 i
5.3 更多的應用
9 T: P( a' ?9 k2 h$ z; D) i' ~: a0 l* a7 S& r
2 C& r3 R/ c; j, z7 i: d8 Z如何在Linux上安裝 unixODBC + DBMaker) u0 y* ~% f) ~) \1 H& j* w& B
在Windows中相當好用的ODBC Driver Manager,在Linux中卻一直沒有相同的設定;而現在Linux也有了類似的unixODBC了!在本文中,除了介紹unixODBC的設定外,也會介紹如何透過PHP去連接DBMaker資料庫,及使用unixODBC所帶來的好處。
- Z' K$ f) a, |2 r; n1 S O& W0 V
* C" M6 t) I3 ]3 b! I* B7 W2 Q/ s6 b$ i# ]& `! I8 ^
' a( x6 }/ g5 {
: u% m: D m/ vunixODBC介紹! w! g3 T" [0 t- a# _* M) B) F
ODBC(Open DataBase Connectivity)是一個跨平台的標準介面,從1990年代開始推行以來,一直廣為業界所使用,即使如今有ADO或JDBC等新的標準,在業界中卻仍時常見到這種界面。即是因為推廣的時間久及開放式的架構,讓用戶已經習慣且易於去使用它了。
- ]* m s6 S2 Q9 G+ H* p9 b% b# g2 E2 }0 P, R
在Windows中,透過ODBC Driver Manager,各家資料庫可個自保留自己的Native Driver,然後使用一層轉接接口,將相對應的ODBC Call轉化成自己的Native API Call;但在User的角度而言,這兩者在外觀上是完全相同的,而各家資料庫則需負責將標準的ODBC Call,轉換成自己獨特的Native Call。 T, G7 P. d4 `7 ]
/ Z B( S! u( i0 v這樣的使用方式,讓ODBC在推出不久,即廣為用戶所接受,User也都習慣在ODBC Driver Manager中註冊自己的Driver,及設定相關的DSN(Data Source Name)。
T' m7 x, J( H8 B
+ D2 z7 Q9 o# {" \) K, x# s$ \這樣方便的設計,在Linux中,卻一直欠缺相同的機制;使得當要使用各式語言去連接資料庫時,便得依該語言的特性去重build一版可呼叫Native Call的模組(module),而一旦Build完後,若當中需要一些變動(如版本昇級),常常就要重build一次,這樣的設計使得Linux在使用資料庫時,極為不便!! : k9 S( f. c! o! z% s2 ~2 r5 A
1 o! I3 j. }" H: g" r! D7 s. m有鑑於此,便有一unixODBC的組織嚐試在Linux底下,建立類似ODBC Driver Manager的機制。此一機制與ODBC Driver Manager的功能相仿,便是要能提供Runtime的動態變換功能,讓AP可以透過ODBC Driver Manager,動態地載入不同的資料庫Driver,透過這樣的方式去連接資料庫。
$ M3 d* [/ U2 X8 R# c! k' f* J! m3 q4 o, ]% m# v" L
如今,許多Distribution廠商都已經將unixODBC列為標準安裝的套件,而愈來愈廣為人知,本文即是要安裝unixODBC,並利用PHP去連接DBMaker 4.2資料庫,並由此來看看使用unixODBC所帶來的方便性。有關unixODBC的其他說明,請參閱官方網站。 4 j( D& p# M; ]' }4 W, a( ^
- T) w, V0 s, b4 Z7 vDBMaker簡介
. R, A% T6 s( _& \) V4 [DBMaker為一跨平台的大型關聯式資料庫,符合SQL 99標準,擁有開放式架構,在處理多媒體、全文檢索上擁有強大的搜尋性能;有關DBMaker Engine部份的介紹,請參閱DBMaker的其他相關文章,本文不再贅述,而只著重在使用unixODBC方式的介紹。
3 Q2 _* [' d9 N- r6 m( z# Q( F0 |- ?8 [. ]# Y
首先DBMaker是一跨平台的大型資料庫,故在Windows、Linux上的安裝與使用幾乎是一致的。若您尚未使用過DBMaker,我們簡單介紹如何在Linux上安裝DBMaker,與其他資料庫相較,您會發現在Linux安裝DBMaker是一件相當輕鬆愉快的工作。
) J0 r( h9 c6 d5 X5 B" g* B" D& W: ~1 d7 H3 H! l% J: j
DBMaker在Linux上的安裝
7 M0 I1 T4 [ V. {1 x! g7 C加入dbmaker的user 首先您須在Linux底下,加入dbmaker這個user,不要忘記請一併將密碼設定好: ' E" i% {5 q6 x, K( B- \: w3 v
, C6 \; o8 M0 R" {7 j2 \" C6 M3 I! l( i G9 u8 `" @
[root@support root]# adduser dbmaker$ M( O3 ?' M. v r0 w$ D
[root@support root]# passwd dbmaker: p# @! F6 K9 g4 W+ A7 f* s
Changing password for user dbmaker.
9 D* g! t# r" ?5 {2 KNew password: 3 G. Z9 W. A h8 ?+ L) [
Retype new password:
" ?* S0 p, p, Ipasswd: all authentication tokens updated successfully.
1 y5 X8 m0 ^- e7 \* q5 ]" O. ]
0 x2 @ C" r; p2 H* R一般說來,除非另行指定,否則dbmaker的家目錄會放在/home/dbmaker底下。 ! {6 F" N5 l g. ]
4 b" j" W4 U1 y& L* ?( Q0 |下載DBMaker 4.2
" N6 u f% V1 g* B" @' b0 _接下來,請至DBMaker的官方網站下載區,去下載最新的DBMaker 4.2版本,將其放在適當的地方。(本文將其放置在/tmp底下)
9 ~5 z- X. \- G I( q3 [9 {* R+ J+ |$ {- N! b
[root@support tmp]# pwd" u6 x! @4 U! q* T2 t; ^1 g6 n$ ^+ I
/tmp: Z& h, ~7 h/ g0 V. M+ j w6 G
[root@support tmp]# ls -al dbm*$ g9 C6 \3 T. d7 ?* `
-rwxr--r-- 1 alen alen 34649895 11§ 23 14:48 dbmaker-4.2.0-Linux2.x86.tar.gz; y0 W7 j r9 ~! ]0 w [: \! P- a) ~
[root@support tmp]# tar zxvof dbmaker-4.2.0-Linux2.x86.tar.gz <==解壓縮
' G6 e E7 m; t; p$ {, }/ h& Y( k) K4 gdm420.tar; ^9 t% ?* K6 q% n. [' G
setup
0 x# a/ d( X* T7 m$ b. m
) e6 W2 }3 u3 s安裝DBMaker
0 Q+ S. \- k- P! g+ O* Q接下來,請切換至dbmaker這個user,並執行setup程式,為了能正確執行setup,請將setup程式改變模式成「可執行」。 " }0 u6 b; G; e5 Y' W0 r
! f, V+ I/ E) n$ g: S
$ w7 A+ X+ P- f" k' G8 I3 ]
[root@support tmp]# chmod a+x setup <==切換成可執行
$ U, S, g0 _6 J% d[root@support tmp]# su dbmaker <==切換成dbmaker後,進行安裝8 ?. o. C1 n. Q0 q9 }. ^
[dbmaker@support tmp]$ ./setup
5 c# I) y# ^) J+ h" {8 C5 h! \: I2 P6 n5 B0 B- a
( ]: a% n8 U, H' j' M1 K
==============================================================
9 e p+ D" b4 c' d; pDBMaker Database Management System Installation f$ x# T: M" w9 m
For DBMaker Release 4.2.0 x7 H3 h) o. t9 c$ `
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.% D( g0 y1 b1 R0 u F
==============================================================6 U2 z! g( Z) J, {! P% L8 v" X, U. o
Install Components:
' \7 p# b4 i' O7 w; Z[A] DBMaker Server .............. (yes) Language: [ Western, Big5 ]
1 j' n+ q# \& ^4 A/ N' L# o[B] DBMaker Client ............... (yes)
3 M R2 V5 U2 ` e* ]4 n/ _[C] Sample Programs............... (yes)# m9 j/ J5 B+ k5 v7 U# z" i
[D] Tutorial Database.............. (no)
s j: j; \- S[E] Documentation ................. (no)
w' z& a$ d- C; K8 n. sInstall Path:% n/ @" x. i5 p% s6 _
DBMaker Home directory: /home/dbmaker
G0 _- T f3 T[Y] Start Install [N] Quit
+ F# h) n$ n$ [3 G TPlease press [ A B C D E Y N ] Y <==為簡單計,請直接使用「Y」進行安裝
$ [1 s$ k' ~# {1 ^% A+ s1 ~* m2 `! G# b
當您按下Start Install後,DBMaker就開始安裝,約1-3分鐘內,安裝便可完成,可說是又快速、又方便呢!2 s" Z4 M0 L& r/ U# f
6 H r- s! H, v1 G+ H& w
檢視安裝後的環境5 o' @5 l6 F% b' d: w
在上述安裝完DBMaker後,DBMaker會自動產生一個範例資料庫-DBSample4,我們可以用下面的方法來啟動這個資料庫:# f: C. T1 d% v; d4 U6 D4 [( p% ^
' G3 G; x) u9 I \3 Z! Z) Q
--------------------------------------------------------------------------------4 j. B1 C* S' x/ L* ~
[dbmaker@support bin]$ cd /home/dbmaker/4.2/bin <=切換至命令目錄,注意此時使用的user為dbmaker!
4 \$ `& I4 c" T[dbmaker@support bin]$ ./dmserver dbsample4 <= 使用此命令來啟動資料庫6 |9 E2 s+ r. _5 E% d
DBMaker 4.2.0 (#4721, 20040924)
2 L. K# Q3 o6 l# g3 c1 Z% O7 NCopyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
, B) }! ^: I+ j: p* G! QSQL Server bound to port 2450 <==已在埠位2450上準備接收request
8 @. S$ S/ N# r% Y# \/ s. D: rDatabase Server is running in the background mode.
7 Q7 n W! H; t- t6 n" Y) t& AProcess ID = 156688 T: S8 S5 d8 K! \) |0 _2 ~
. l' G a3 N g) | N, E3 ~
這樣資料庫就啟動了,您可以參考DBMaker的其他手冊,使用其他工具來操作這個資料庫;(有關資料庫服務的埠位、名稱等設定,都記錄在/home/dbmaker/data/dmconfig.ini文檔中,有關此文檔中的相關設定,也請參考DBMaker線上手冊)。
" ?+ C i9 X; c$ e c9 |6 I; {在安裝完DBMaker後,應該就可以在/home/dbmaker/4.2/lib/so中,找到DBMaker的odbc native driver。+ K) ?3 ?' i Q
$ O! A. T" x6 s- B4 K7 `[dbmaker@support bin]$ ls /home/dbmaker/4.2/lib/so/6 p- h% d% d( r
libdmapic.so libdmjdbc42.so libdmxtt.so libiconv.so.2.2.0! a0 F8 l; Q3 k5 Y$ L5 ~- X2 {
libdmapis.so libdmjsvrut.so libexpat.so libxerces-c.so1 v* Z7 [; V9 x
libdmdttut.so libdmudf.so libiconv.so libxerces-c.so.21' P5 t' q& p8 J- f$ m
libdmjdbaut.so libdmxtm.so libiconv.so.2 libxerces-c.so.21.0' t; o3 X0 ?8 |/ Y7 J i, I
3 c" ]; v1 Y. q
其中的dmapic.so,便是DBMaker的native driver;由於DBMaker在開發之初,便是使用ODBC的開發介面,所以DBMaker的Native Driver,便是一符合ODBC API標準的Native Driver;而不像有些資料庫廠商,事實上還是需要另一層薄薄的轉換接口,才能將ODBC API轉成實際的Native Driver API。7 p& i8 X2 K3 w% s$ K+ |3 i
5 C0 I$ @/ k, I; J# w安裝unixODBC
4 u% c0 q# {& k- x" g. Q9 N接下來談到本文的主角-unixODBC,由於多數人已習慣RedHat的rpm安裝方式,故本文會使用rpm來安裝,至於若要自行build者,請參閱unixODBC的官方網站。( _5 K! y' Z8 {, i! |! `# \; L
首先至官方網站中取得最新的unixODBC package,本文使用的是2.2.3-6的版本。
6 F; a- [' A! W1 i接著,我們使用rpm將unixODBC安裝上去:
/ D& t$ {/ D! q0 D$ O* p
" m W2 F5 k/ j% f/ ]2 O7 I[root@support tmp]# rpm -ihv unixODBC-2.2.3-6.i386.rpm
0 i" ~) j; B, O: F, H& b3 \8 _) ~! Y& lwarning: unixODBC-2.2.3-6.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
. P' }; s3 r7 a. r; z0 z8 A X; dPreparing... ########################################### [100%]
! C3 a" R' W! Q* W9 p[root@support RPMS]# rpm -ql unixODBC|more<==檢查一下到底安裝了那些檔案!4 ~/ c' c. [8 j+ M& J
/etc/odbc.ini <==這是安裝DSN的檔案,本文的重點' P5 j! n- t$ Y7 e y; j; r Z
/etc/odbcinst.ini <==這是Driver Manager所放置的Driver設定區,亦為本文重點5 n; F* j- \& A) ~7 b6 d, y6 y
/usr/bin/dltest: I* e: X2 Z9 L! C* c- c
/usr/bin/isql
' j/ `8 D* e9 |& A1 Z" }/usr/bin/iusql9 x A8 \) u) B2 \1 {8 {
/usr/bin/odbcinst9 k: Z. p3 J. V$ i! e3 f
/usr/bin/odbctest) ^/ K# p% O5 y
/usr/lib/libboundparam.so.1
; q8 L0 g& w' _/usr/lib/libboundparam.so.1.0.0
" w ]3 f7 z, c* P7 f/usr/lib/libesoobS.so.11 ^ ^- T. _, R7 \9 r$ I
/usr/lib/libesoobS.so.1.0.0
- Z: ^7 `2 E& C& P% W5 _/usr/lib/libgtrtst.so.17 O) _- D L1 v1 C( o
/usr/lib/libgtrtst.so.1.0.0' o9 n$ B0 k# E$ f5 D
/usr/lib/libnn.so.1
" L: B- O3 K8 V5 v( S/usr/lib/libnn.so.1.0.0
6 w6 s+ a6 _2 |/usr/lib/libodbc.so
, c& g" q' ~9 `4 `* P/usr/lib/libodbc.so.1
- t \$ J, m" _. k/usr/lib/libodbc.so.1.0.0
) w. I/ |3 p, D z/ {3 B. _$ l4 w7 ]............: ~7 K( A" F7 b0 E7 o9 e; K" }7 u9 f
0 t9 B. e; v3 U$ Q! q# j) B
; i+ R& l. \( k* E! c7 \8 h# ?/ i+ p* g( g' A7 {6 S# v
設定unixODBC連接DBMaker 4.20 Y. n# V z2 Y# p. p/ G" _$ }" D
如上所述,我們接下來就是要將unixODBC與DBMaker的Driver串接在一起,如同在Windows上,去設定Driver Manager一樣。
" E" \! i# ?: c% d
% s* }, o! o9 U% g1 B: |* F3 [設定Driver
" Y; `) w$ A% S+ S1 ?& W在Windows的Driver Manager中,我們所使用的Driver,事實上也是需先向Driver Manager登記的,這個動作由於多數是由資料庫廠商的安裝程式作掉,所以User可能完全不知覺。
- J$ _- [, c. z6 L但在unixODBC中,則必須由使用者自己來進行註冊Driver的動作,這個登錄的動作,即是要在/etc/odbcinst.ini中加上DBMaker相關Driver的資訊,我們首先打開這個檔案,並加上下面的幾行:
( Z1 q/ {9 p1 D a: R4 q6 O7 }( L1 k- @; g
[root@support RPMS]# more /etc/odbcinst.ini% e7 e' ?" ?" {( v$ I9 s1 `- p
# Example driver definitinions- k" m( [' Y; f, ^6 K
#
" j% c5 f9 ^' G4 w/ H4 ?8 ~2 H9 S#/ c% ~+ \2 h+ U
1 @2 o9 L: ]/ |1 ~ M) K! z- ], t# Included in the unixODBC package: Q* n& v' `2 `
[PostgreSQL]
! i7 Y9 y) d/ P* ]. h7 aDescription = ODBC for PostgreSQL
& U% R. {& R( e5 _! J. BDriver = /usr/lib/libodbcpsql.so
6 } {& d9 |- \7 z, j( P% zSetup = /usr/lib/libodbcpsqlS.so
4 ]8 r# r0 Q- l2 l# w2 [FileUsage = 1
$ u% z% `3 ?. T+ K* m....
8 Y( k# ~$ c: W9 B[DBMaker 4.2 Driver] <==這就是您向unixODBC註冊的Driver名稱,可自行定義/ K3 `) r3 W: u; G' C
Description = ODBC for DBMaker 4.2* v1 R1 W0 m3 e* O9 J
Driver = /home/dbmaker/4.2/lib/so/libdmapic.so <==必須登記您環境中,DBMaker所使用的Driver完整路徑: {+ i! Z# T2 O- y- J _9 p+ W
#Setup = /usr/lib/libodbcdbmakerS.so: j. v U; O5 j% h a
FileUsage = 0
) \5 u; J1 f/ Q: T) l+ Q6 | U) e6 K( ?
7 c# w5 n. m! j5 s5 E在設定Windows的Driver Manager時,在加上一個新的DSN時,資料庫廠商通常都提供一個安裝程式,讓使用者可以登記如Server位置、Port Number、須要使用什麼認證…等等。這個畫面就是上述的「Setup」,由於DBMaker目前在unixODBC中並未提供安裝畫面,故須暫時將它關閉;待之後的版本提供後,再把它開啟。
) E8 `7 t1 e6 t0 R* f4 z. g: M/ Z1 r
設定ODBC DSN
, P. e# c. G8 o2 M* m8 o接下來便是設定Data Source Name了(DSN),在Windows時,有所謂的System DSN及User DSN,其實主要的差別便是System DSN是可為所有User所存取,而User DSN則只能為某特定user存取;當login成另一位user時,便看不到原來User登錄的DSN了!' z8 _8 O d- e
而在unixODBC中,則是使用不同位置的檔案,來存放System DSN及User DSN,在我們的環境中,System DSN會放在/etc/odbc.ini,而User DSN則會放在個別User的家目錄/.odbc.ini。# b9 K0 S0 f2 a
由於我們要使用Web的PHP來連接DBMaker,所以要設定System DSN,以下是我們所放置的內容:8 f& S0 ^( z2 D! F; w
7 h0 V u# S" y/ u# }+ e0 u[dbsample4]8 ~4 h8 J4 Q% v% T p, _: A9 h1 T
Description = Database for dbsample42 P1 t& v% \: ~. [+ h3 Q
Driver = DBMaker 4.2 Driver <==注意,此處須與之前Driver設定的名稱相同0 |, e0 \( g0 w, [* y
Database = dbsample4 <== 資料庫名稱
9 X$ q7 H" h- ^Host = localhost <== server所在位置
; E, g7 G4 e; [- ]Port = 2450 <== 埠位置 A+ ?6 ?: w% @# Z% L6 E
User = SYSADM <==使用名稱(DBMaker預設所使用的管理者名稱)& i, c B( E% ~' b3 T& p
Password = <==使用密碼 (DBMaker預設所使用的管理者密碼): Q( k b0 d' W+ T. f, e
當然您可以使用不同的帳號/密碼登入,但此處為方便,使用DBMaker所預設建立的管理者帳號SYSADM,及預設的密碼(空白)
1 N- H- ~2 p" E8 j; O0 R5 F, @8 t% O0 z2 Q
測試連接
0 o8 A b+ A: o. a" h+ \接下來,我們使用unixODBC所附的isql來連接dbsample4的資料庫,isql的標準語法為: D+ Z0 D7 g/ w1 }
8 F7 y1 D$ r$ L, Risql DSN [UID [PWD]] [options]2 b; g# m- ~3 k) b" s; S
我們直接用下方命令來連接資料庫:+ s3 h$ Z: D! P: j5 w
8 e9 F* F) n4 c2 l' b[root@support RPMS]# isql dbsample4 sysadm$ M1 e- Q6 ]# U- {% ?" l0 q# m
! p; C& l" u/ z" p. ]+---------------------------------------+$ |7 ], ~: o* Y/ t: q, Q J* A
) r: @ D3 q+ V6 k- r
| Connected! |
; b( r( V3 N5 \5 m+ W/ k/ o" F
( z+ ~0 c6 K) ~5 ]1 Q5 d: f| |
/ [5 I% R: D! J4 D0 z# ]9 V, `; Q+ K* ]2 K; Q
| sql-statement |8 i. S, h z( \/ Z. j
v5 H b& a! e# [! v. m" l% H! l| help [tablename] |
; _ H" M: L! ~4 V# T _% n. W
5 w- @& w7 S, s' @) I1 w" g| quit |
. B1 z9 E7 ?9 h7 O, @8 d
4 B0 C) F0 U: n q- r& L' n| |" N9 f+ s, O( \9 S! \7 F
) W. }6 v: w/ s% `. H
+---------------------------------------+
) h% ~+ S4 S3 S; _ E
4 ]* C! ^8 e4 h5 E: s" `1 eSQL> select * from SYSTABLE;
! e( @$ F4 Z9 o5 o2 R
3 o& c. _8 ^$ j3 s& O+ h# O.......1 c( r. o2 T h) E
0 a; J; `: S" J* q3 t, ~, L& o, ?0 g$ W
這樣便可確認我們的確能從unixODBC中,正確連接到DBMaker sample4的資料庫!
" z! f0 t8 b, @) C
3 j3 t# k z& n' |0 jPHP+unixODBC+DBMaker$ f7 B' A2 [" W
現在我們能用unixODBC來連接DBMaker了,剩下來的工作就簡單多了,首先我們先確認我們的php是能夠呼叫odbc function的,先用測試程式看看php是否包含了odbc呼叫:
0 w0 T( S! Y8 o: {$ u! M! |=>存成phptest.php6 B6 ?: s: Q) r% I( f
然後在Browser底下,查閱Configure Command,是否有--with-unixODBC=shared的文字!0 n) x N+ o/ Z4 w) o" W+ |$ \1 G
接著再查閱網頁中的ODBC該節,是否顯示ODBC Library為unixODBC!; w: \' t: C( |. F" M
若是以上都無誤的話,您可以撰寫以下的程式php_odbc.php:
- D8 z7 r _8 M# w! o
) x3 o! X1 w: u m6 l" z很有可能(最少筆者就碰到),此時卻顯示了無法認識odbc function call;這個問題在筆者這邊碰到時,先查了一下php裝設了那些rpm,後來便發現少裝了php-odbc這個套件,不知道是不是Distribution的問題(筆者裝的是RedHat 9.0)。當正確安裝了 php-odbc-4.2.2-17.i386.rpm後,再執行上述程式,便沒有發現錯誤了!6 `7 k& w9 j P" t4 e& i7 X& t
有關php的設定及它與apache的設定,網站上另有一篇專文,請自行參閱。
8 w3 b! K5 r4 ?. b, n. U# ?! J至此已經大功告成,user可以自行撰寫幾個簡單的測試程式,測試看看是否可以正確使用DBMaker,開始撰寫自己的網頁囉~
5 k4 L6 i" L. E8 p G! v T) e; a. `. D# q3 `) n. Q) @9 p, q
結語
# k1 L: L; H; ?: R使用至今,我們發現unixODBC至少提供了幾個好處:( \: L& m, }. P1 V/ n: s
提供了Logical DSN對應到實體的Database Name " N; Z1 j( W7 w. p( t
可同時連接不同版本的DBMaker , D, |6 A, L4 B9 L d
* |! b: m5 x5 w* l5 c+ A& g. }提供了邏輯與實體資料庫的轉換
" e8 P) c# Z' }7 b6 o2 Y$ F9 }這也是為何Windows ODBC Driver Manager為何歷久不衰的原因;透過odbc.ini的設定,將邏輯的資料庫名稱,對應到實際的driver及database name。這樣的設定,也一併解決了下面要說的版本問題
6 ~3 O4 }+ ~0 ?
, P3 J$ F2 e+ n連接不同版本的DBMaker0 S# P; i: |* }9 S0 X
這是筆者最喜歡的一點!在早期build PHP時,必須要使用下面的方式來生成:
. M7 `: ^# G1 c$ z./configure --with-apxs=/usr/sbin/apxs --with-dbmaker=/home/dbmaker/4.2 --enable-track-vars
6 g/ P* a3 ^& G2 w, m+ v在這樣的設定中,其實已經把DBMaker的版本給設死在面,所build出來的libphp4.so,就是已經設死成只能連接DBMaker 4.2版本。! m8 k/ Q" A( f4 l8 J0 T
若是今天想寫一支php程式能同時連接3.7及4.2時,那要怎麼辦呢?這就慘了,因為在這樣的架構下,是沒有辦法作到的。
+ {" `$ o$ P- X( k所以筆者有些機械的php就固定只能連3.7,有些機械就是放4.0;若要跨兩個版本的Database,就只能靠別的方法了。6 N6 S- a$ s! r" s- N
但unixODBC提供了這一層轉換方式,讓libphp4.so不是設死只能連DBMaker 4.2,而是能動態存取外在的ini檔案後,再去連接DBMaker不同版本的so。這樣一來,筆者就能在同一支程式,靠著不同版本在odbc.ini中的設定,而能同時存取了!
. t. f" j0 J& |3 e) N. T; @& {& |& c9 q
更多的應用
5 {( |! I4 z: u1 _* B目前unixODBC已逐漸廣為人所接受,不單PHP,包括Perl、Python甚至Java-ODBC Bridge都能使用。如此一來,所有的資料源都可以集中交由unixODBC來管理,這個發展過程,在Windows Driver Manager發展之時也都有過,而它顯而易見的好處,造成了Driver Manager及ODBC的風行!而也希望透過這篇文章,幫助使用者瞭解它,學習它,使用它,最後能真正地喜歡它!
|