管理員
|
1#
大 中
小 發表於 2009-6-10 01:48 PM 只看該作者
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker , n) A5 Z" F X
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker ( R5 f; { X1 i$ Y9 R" z
目錄
0 J7 `& R5 V3 ]( g1 如何在Linux上安裝 unixODBC + DBMaker
9 ]/ n7 ~; w( f* O0 ~2 P: V7 G, j& s' D+ S* h( t) J
2 unixODBC介紹6 y$ y6 x5 f1 \/ ?: d$ }# l
7 \9 @3 ]) ~1 r3 ^4 ]
3 DBMaker簡介
0 B* |6 j4 ^* _* }4 S3.1 DBMaker在Linux上的安裝/ D- o5 I% k: h
3.2 下載DBMaker 4.2
6 ^( I$ E% m( B% F9 f8 N3.3 安裝DBMaker
* t1 I( u3 ~* {$ J) M! _0 ^# ^3.4 檢視安裝後的環境
, }+ m& }5 h; k+ [# X2 e
, Q) ^; [- c+ m+ t0 k5 s4 B4 安裝unixODBC& A% i* W0 G4 i! V5 ]- s$ |
4.1 設定unixODBC連接DBMaker 4.2% M" }7 ]) l2 d) {5 @ ]
4.1.1 設定Driver
# A+ E3 y, ^+ A. Z1 s/ O 4.1.2 設定ODBC DSN* A# X( p' q/ a$ i
4.1.3 測試連接
5 D8 C4 G. _" R8 @4.2 PHP+unixODBC+DBMaker
0 _% _8 H" k+ u8 ~8 z% _- ~
+ ]- F/ r3 a& `* A. ]2 u) P5 結語- c. j* I+ Q* w( g7 F
5.1 提供了邏輯與實體資料庫的轉換* j1 m+ j1 g5 C/ |: Q z
5.2 連接不同版本的DBMaker M% K# V/ o* t7 O; N% O: }
5.3 更多的應用 r# D( q1 a; T% y; }1 g2 i
! g9 L/ w9 E6 u; ]# [& c& ^: V2 ], Y8 @: G
如何在Linux上安裝 unixODBC + DBMaker! ]. P4 F1 a: Y1 @) a
在Windows中相當好用的ODBC Driver Manager,在Linux中卻一直沒有相同的設定;而現在Linux也有了類似的unixODBC了!在本文中,除了介紹unixODBC的設定外,也會介紹如何透過PHP去連接DBMaker資料庫,及使用unixODBC所帶來的好處。
$ B; A) j' w+ [$ O [" |- z: [1 m& [3 \: H1 h# h' Z: j
7 n) \: A, d( ~& A' l. e! ^0 c' ^* l1 I! v" g' y
0 D; I; W! c1 G7 CunixODBC介紹
; x; W7 |. g/ q6 UODBC(Open DataBase Connectivity)是一個跨平台的標準介面,從1990年代開始推行以來,一直廣為業界所使用,即使如今有ADO或JDBC等新的標準,在業界中卻仍時常見到這種界面。即是因為推廣的時間久及開放式的架構,讓用戶已經習慣且易於去使用它了。
: J. i, ` O% T+ T( g5 E2 ~# T5 Q9 ^
在Windows中,透過ODBC Driver Manager,各家資料庫可個自保留自己的Native Driver,然後使用一層轉接接口,將相對應的ODBC Call轉化成自己的Native API Call;但在User的角度而言,這兩者在外觀上是完全相同的,而各家資料庫則需負責將標準的ODBC Call,轉換成自己獨特的Native Call。
! K' @3 j7 ~ N- z/ x$ M! C4 _1 ~- n) h' B4 F; h) b
這樣的使用方式,讓ODBC在推出不久,即廣為用戶所接受,User也都習慣在ODBC Driver Manager中註冊自己的Driver,及設定相關的DSN(Data Source Name)。
2 I6 @. ~9 v1 H1 a
/ l& e- [- {: L/ I. a. n5 X7 f5 ?這樣方便的設計,在Linux中,卻一直欠缺相同的機制;使得當要使用各式語言去連接資料庫時,便得依該語言的特性去重build一版可呼叫Native Call的模組(module),而一旦Build完後,若當中需要一些變動(如版本昇級),常常就要重build一次,這樣的設計使得Linux在使用資料庫時,極為不便!! k$ f4 I' s+ S h
( X1 Z! u* I% _0 P8 f0 B. K4 f有鑑於此,便有一unixODBC的組織嚐試在Linux底下,建立類似ODBC Driver Manager的機制。此一機制與ODBC Driver Manager的功能相仿,便是要能提供Runtime的動態變換功能,讓AP可以透過ODBC Driver Manager,動態地載入不同的資料庫Driver,透過這樣的方式去連接資料庫。
4 T' `: i ^& j9 n8 Y# B# D& ?* C3 f e, ^: p: h, S5 n3 o. q3 d
如今,許多Distribution廠商都已經將unixODBC列為標準安裝的套件,而愈來愈廣為人知,本文即是要安裝unixODBC,並利用PHP去連接DBMaker 4.2資料庫,並由此來看看使用unixODBC所帶來的方便性。有關unixODBC的其他說明,請參閱官方網站。
- ^4 q& S$ @6 ~# f
9 c/ n; F& ~) t5 z( y- qDBMaker簡介: M/ Q" L4 Q. B: h
DBMaker為一跨平台的大型關聯式資料庫,符合SQL 99標準,擁有開放式架構,在處理多媒體、全文檢索上擁有強大的搜尋性能;有關DBMaker Engine部份的介紹,請參閱DBMaker的其他相關文章,本文不再贅述,而只著重在使用unixODBC方式的介紹。
a; T4 X/ [1 P+ h4 s4 A
$ t9 \% N# @4 m! J( Z* L1 P+ ]首先DBMaker是一跨平台的大型資料庫,故在Windows、Linux上的安裝與使用幾乎是一致的。若您尚未使用過DBMaker,我們簡單介紹如何在Linux上安裝DBMaker,與其他資料庫相較,您會發現在Linux安裝DBMaker是一件相當輕鬆愉快的工作。 z$ m: p* m' c% I* S
' e* _, F& T5 u' `1 S8 V
DBMaker在Linux上的安裝, H* {5 M# Q7 R* ^/ l+ Z
加入dbmaker的user 首先您須在Linux底下,加入dbmaker這個user,不要忘記請一併將密碼設定好:
H+ g1 W2 D% o0 @. j" g8 t! D# z% [) d; f: k; C* l
) @, }* g% t& y
[root@support root]# adduser dbmaker7 S; T+ t" }/ W/ h# }8 N
[root@support root]# passwd dbmaker
4 O! K2 Q7 f6 r& j7 F4 A6 B0 TChanging password for user dbmaker.. b- H% `% a3 d; {
New password: ` e& @4 [. ?( u$ `
Retype new password: , ~9 ?3 o* m5 ^) ]$ @+ p
passwd: all authentication tokens updated successfully.
6 B ^7 \: I" c" ?4 y& {! t
8 z) D4 U9 U' Q+ s& M R8 f一般說來,除非另行指定,否則dbmaker的家目錄會放在/home/dbmaker底下。
& |2 |: B6 X& Q0 m+ f# ~* |2 g" [: M! }0 |
下載DBMaker 4.2" i$ Z7 r4 C+ o! R( {
接下來,請至DBMaker的官方網站下載區,去下載最新的DBMaker 4.2版本,將其放在適當的地方。(本文將其放置在/tmp底下)
4 N+ s. a% O+ l, \% m9 e8 k% Y8 j5 ] I- Y
[root@support tmp]# pwd
; ^6 L' a, T4 N: c8 N" r! [( Y- E/tmp
9 m- a+ B* `4 ~$ A/ s+ g+ U s' _! y[root@support tmp]# ls -al dbm*
- ~0 E& D0 I) w7 k6 P-rwxr--r-- 1 alen alen 34649895 11§ 23 14:48 dbmaker-4.2.0-Linux2.x86.tar.gz2 A2 B' @# ?, ~7 p/ b
[root@support tmp]# tar zxvof dbmaker-4.2.0-Linux2.x86.tar.gz <==解壓縮
! O: d; G3 Q' Y9 {1 udm420.tar
8 s4 D7 ~' ^3 }8 m! |setup+ f3 I' z3 w9 e' Y- X5 |* x
+ }' ?+ R6 ?5 [# G8 r3 O
安裝DBMaker
, t, g) R, F+ n$ d5 z# A接下來,請切換至dbmaker這個user,並執行setup程式,為了能正確執行setup,請將setup程式改變模式成「可執行」。
# p7 ~7 R9 g4 F9 d3 B: J1 L: H' y3 {9 X, E- A0 ]1 @' D
$ \5 T6 ]3 Y, O2 c[root@support tmp]# chmod a+x setup <==切換成可執行' L2 j$ k( y6 P9 ? ?7 G t3 g `% Y
[root@support tmp]# su dbmaker <==切換成dbmaker後,進行安裝, t$ A4 w2 Z% ?' M
[dbmaker@support tmp]$ ./setup# ~# A* g; S; y. {
8 {+ H. G( T; `$ v% f$ G a
N2 ^, \$ n0 Y==============================================================9 _7 T0 y/ Y: r6 D
DBMaker Database Management System Installation: f) E4 l7 L- A, |. h
For DBMaker Release 4.2.09 k# f( y) ?" X6 P! B* q/ s
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
. R) L. _/ e( T0 v( v: [==============================================================8 w- Y7 H! r' i7 H# k# y5 H
Install Components:+ f) a0 B* H# p0 z) L
[A] DBMaker Server .............. (yes) Language: [ Western, Big5 ]0 I; O8 ?' K, |& K% b
[B] DBMaker Client ............... (yes); O8 F% v, M9 o @" C- J
[C] Sample Programs............... (yes)7 T% Z* p7 U8 |" z3 y
[D] Tutorial Database.............. (no)9 \" Q& u8 ~. ] Z9 H
[E] Documentation ................. (no)& I* a% O D6 D4 L2 [
Install Path:
6 A4 x# p Y7 HDBMaker Home directory: /home/dbmaker
* Z& w$ ^4 Z) k: t[Y] Start Install [N] Quit
2 P( K a; D( F4 G kPlease press [ A B C D E Y N ] Y <==為簡單計,請直接使用「Y」進行安裝7 E: D0 X2 H7 z" X
% V7 o# ?: h8 H9 M! M. `
當您按下Start Install後,DBMaker就開始安裝,約1-3分鐘內,安裝便可完成,可說是又快速、又方便呢!5 O, F; Z! ^4 K) t4 f4 {
3 q+ w& O: Y6 k: M4 p3 E: b
檢視安裝後的環境
8 L! c0 z8 q, X# y2 Y3 F" ?. \在上述安裝完DBMaker後,DBMaker會自動產生一個範例資料庫-DBSample4,我們可以用下面的方法來啟動這個資料庫:7 X c: _" r, P
$ g/ D. k# o) f% l4 i--------------------------------------------------------------------------------
; }# m0 Y* X# P5 g0 U1 V: \[dbmaker@support bin]$ cd /home/dbmaker/4.2/bin <=切換至命令目錄,注意此時使用的user為dbmaker!
9 Q2 C1 k1 Q1 s3 j$ _- s+ _[dbmaker@support bin]$ ./dmserver dbsample4 <= 使用此命令來啟動資料庫
9 X3 \( q) E! }" h7 a- r) }! zDBMaker 4.2.0 (#4721, 20040924)% k/ D9 j6 u3 ?6 L5 D7 Z
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
+ T% Q3 [" ~: @: J2 f* CSQL Server bound to port 2450 <==已在埠位2450上準備接收request' S5 H! Q4 i0 A& @2 t
Database Server is running in the background mode.2 |7 S6 ?1 P; g; `
Process ID = 15668" c o$ p9 z: R6 R9 r0 F
0 X1 r% w; R5 [. P6 N- N! S/ C
這樣資料庫就啟動了,您可以參考DBMaker的其他手冊,使用其他工具來操作這個資料庫;(有關資料庫服務的埠位、名稱等設定,都記錄在/home/dbmaker/data/dmconfig.ini文檔中,有關此文檔中的相關設定,也請參考DBMaker線上手冊)。
" I5 Z: y. n( V+ F在安裝完DBMaker後,應該就可以在/home/dbmaker/4.2/lib/so中,找到DBMaker的odbc native driver。4 c3 Q" ^* ?8 _+ f; w
8 T: K# X2 } Q# i! B+ J* Y1 ], b+ c6 b
[dbmaker@support bin]$ ls /home/dbmaker/4.2/lib/so/2 L+ o- o# f' B( a' }
libdmapic.so libdmjdbc42.so libdmxtt.so libiconv.so.2.2.02 O+ n" F/ Z( J; l
libdmapis.so libdmjsvrut.so libexpat.so libxerces-c.so9 x1 n+ k H3 i" _7 {$ T
libdmdttut.so libdmudf.so libiconv.so libxerces-c.so.21) V: j( a3 B" q8 x5 V# v8 j. K. f
libdmjdbaut.so libdmxtm.so libiconv.so.2 libxerces-c.so.21.0* L4 L4 Z4 c9 r5 W' |, z
2 \6 ~: `: ]3 X" B) i6 H其中的dmapic.so,便是DBMaker的native driver;由於DBMaker在開發之初,便是使用ODBC的開發介面,所以DBMaker的Native Driver,便是一符合ODBC API標準的Native Driver;而不像有些資料庫廠商,事實上還是需要另一層薄薄的轉換接口,才能將ODBC API轉成實際的Native Driver API。6 g& O; Q4 O7 S5 f- |/ t
2 X- }, L+ I" i5 G/ U4 Z* `. h9 k9 Q
安裝unixODBC
/ _* |2 ~! N! _! P接下來談到本文的主角-unixODBC,由於多數人已習慣RedHat的rpm安裝方式,故本文會使用rpm來安裝,至於若要自行build者,請參閱unixODBC的官方網站。: b2 X9 M" V5 O% d$ u, C2 a' v, L
首先至官方網站中取得最新的unixODBC package,本文使用的是2.2.3-6的版本。
( Q3 E: m* h! i! L" X2 m接著,我們使用rpm將unixODBC安裝上去:
7 Z# n7 E0 n- A2 R2 r% P! Q
6 U( f/ P: \9 l$ W+ u7 l0 ^2 W[root@support tmp]# rpm -ihv unixODBC-2.2.3-6.i386.rpm * d1 \" Z- W. C: C8 c8 L0 I% K, k
warning: unixODBC-2.2.3-6.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
/ R9 u) l. B! E' z0 ^Preparing... ########################################### [100%]! t+ f# z% ^$ W; F
[root@support RPMS]# rpm -ql unixODBC|more<==檢查一下到底安裝了那些檔案!7 a' M* ?. j1 _3 D( p' c, w6 b
/etc/odbc.ini <==這是安裝DSN的檔案,本文的重點
6 K" {* g& G, p: [9 c8 c/etc/odbcinst.ini <==這是Driver Manager所放置的Driver設定區,亦為本文重點% U( T# J" N1 g3 ]* R; R4 A7 y' w" g
/usr/bin/dltest
2 B: A: z9 `4 K `: f/usr/bin/isql2 A+ ~) Y( |* H
/usr/bin/iusql
( z; I9 W" C, X, i* t/usr/bin/odbcinst/ k6 K, i6 O: C% m6 I
/usr/bin/odbctest! s7 K3 T8 N7 b! \" I P6 ]
/usr/lib/libboundparam.so.12 d4 D, p! _/ }+ Z
/usr/lib/libboundparam.so.1.0.0' ?5 K$ C i3 ^/ V
/usr/lib/libesoobS.so.10 I* p' C/ Z, Y t0 f( }4 P
/usr/lib/libesoobS.so.1.0.0% J0 W& P; `# b. r& c' \. ^8 t
/usr/lib/libgtrtst.so.1( n6 j7 u9 H' l$ R7 v7 l5 V
/usr/lib/libgtrtst.so.1.0.0
s: _ I3 U' f! E' Y" Q- p/usr/lib/libnn.so.1
# N& ~4 j$ Y6 V! Z% W4 @0 B/usr/lib/libnn.so.1.0.08 S. D5 z9 i8 o! d& z/ g
/usr/lib/libodbc.so; K1 t+ F& U0 y9 S4 M9 ~ m9 w" Z& J' F
/usr/lib/libodbc.so.1" D/ d; Y9 U4 P8 l: {
/usr/lib/libodbc.so.1.0.0
" t% H3 r% d5 P: p............1 c- O" \) a9 J$ A1 Z
& F5 E0 A) o G. d. f& F1 i# ~ v: d; V* }# M1 O
- b# e" _1 [9 O4 c1 j2 l0 Q m" ?/ ]* w8 p設定unixODBC連接DBMaker 4.2) C$ T$ p4 A( i
如上所述,我們接下來就是要將unixODBC與DBMaker的Driver串接在一起,如同在Windows上,去設定Driver Manager一樣。
+ y4 [/ s# a: @4 Q+ Z& |( x Y; a9 \
設定Driver
/ C @+ ?. g* e! c7 B5 p在Windows的Driver Manager中,我們所使用的Driver,事實上也是需先向Driver Manager登記的,這個動作由於多數是由資料庫廠商的安裝程式作掉,所以User可能完全不知覺。0 J( Y- ?3 j5 \
但在unixODBC中,則必須由使用者自己來進行註冊Driver的動作,這個登錄的動作,即是要在/etc/odbcinst.ini中加上DBMaker相關Driver的資訊,我們首先打開這個檔案,並加上下面的幾行:
, e5 [9 E, a' L0 Y5 H5 t
" x: q: h! c. C[root@support RPMS]# more /etc/odbcinst.ini
- d& ?% d+ K8 _, a. U9 A4 ^' p# Example driver definitinions' P& n' Z" P2 \1 }# ^- t
#9 D/ @( C, q: W# t3 F1 Z) v
#
% k5 g; B1 Y2 N
) N! F/ M2 E4 c7 t! s# Included in the unixODBC package
8 y) o4 ~3 z7 r8 E[PostgreSQL]/ G! P# o% O* o/ ^
Description = ODBC for PostgreSQL: a+ P1 _/ ~7 Y) @ ?; |( K
Driver = /usr/lib/libodbcpsql.so
n: `1 d. z7 X4 x9 _+ Q1 Z5 kSetup = /usr/lib/libodbcpsqlS.so; G: D1 M: d" m
FileUsage = 1
9 z* W7 m8 A; E, ?9 c; t" y$ y....
" D& s% O2 H" Z$ C[DBMaker 4.2 Driver] <==這就是您向unixODBC註冊的Driver名稱,可自行定義
1 R" u" E) W; p6 FDescription = ODBC for DBMaker 4.20 y( G8 l& B e' @: t( Y, |
Driver = /home/dbmaker/4.2/lib/so/libdmapic.so <==必須登記您環境中,DBMaker所使用的Driver完整路徑
- R( \2 Y/ j( f* k#Setup = /usr/lib/libodbcdbmakerS.so
9 `$ _) h6 z4 G+ W3 iFileUsage = 02 t1 o5 z0 r4 U2 r4 ]
1 h+ e% d; q! K& E
5 w1 m1 e8 g" d {' C在設定Windows的Driver Manager時,在加上一個新的DSN時,資料庫廠商通常都提供一個安裝程式,讓使用者可以登記如Server位置、Port Number、須要使用什麼認證…等等。這個畫面就是上述的「Setup」,由於DBMaker目前在unixODBC中並未提供安裝畫面,故須暫時將它關閉;待之後的版本提供後,再把它開啟。0 }) v* t2 }3 p c; Z) l
; A: F3 O2 m7 A( G7 N設定ODBC DSN
4 z) t' E! t, g接下來便是設定Data Source Name了(DSN),在Windows時,有所謂的System DSN及User DSN,其實主要的差別便是System DSN是可為所有User所存取,而User DSN則只能為某特定user存取;當login成另一位user時,便看不到原來User登錄的DSN了!; w# s- A7 k' q
而在unixODBC中,則是使用不同位置的檔案,來存放System DSN及User DSN,在我們的環境中,System DSN會放在/etc/odbc.ini,而User DSN則會放在個別User的家目錄/.odbc.ini。 z% J. S# X3 G2 C- z9 _
由於我們要使用Web的PHP來連接DBMaker,所以要設定System DSN,以下是我們所放置的內容:
/ o; O. t( n; n; Z8 Z5 R% p" k5 a# O% c- a" d1 H
[dbsample4]
1 t7 ^/ t2 `0 [5 o& ~Description = Database for dbsample44 V( i! d [* u/ ]5 r8 f
Driver = DBMaker 4.2 Driver <==注意,此處須與之前Driver設定的名稱相同
+ z' N- c# [# F! g# u L XDatabase = dbsample4 <== 資料庫名稱
9 Q: R5 L1 c$ i s9 z, KHost = localhost <== server所在位置5 f/ ? V! d+ D; _) v8 o* z
Port = 2450 <== 埠位置
) f# J `2 _4 Y6 w$ G3 M7 d5 T) ^User = SYSADM <==使用名稱(DBMaker預設所使用的管理者名稱)
! F; B" X! P* CPassword = <==使用密碼 (DBMaker預設所使用的管理者密碼)
# B6 ~* ~5 P, T1 P/ I; H當然您可以使用不同的帳號/密碼登入,但此處為方便,使用DBMaker所預設建立的管理者帳號SYSADM,及預設的密碼(空白)/ p+ ]) A$ o. z+ Z3 C& u
5 ~9 l i0 {1 E* ]( b3 {/ |$ |
測試連接9 x( o4 e8 z! X3 f* r: c9 n
接下來,我們使用unixODBC所附的isql來連接dbsample4的資料庫,isql的標準語法為:0 ?3 l, Y3 b! c6 c
' `/ u" |8 q, Y! H
isql DSN [UID [PWD]] [options]
7 c* }3 K v! D7 d8 X我們直接用下方命令來連接資料庫:
* P2 Z# W) r4 u" R( S& z# \! [( J
[root@support RPMS]# isql dbsample4 sysadm3 b% n z. R8 L
) h# [ \9 s1 N8 l/ Q- T+---------------------------------------+4 G3 M' n3 U* v" {0 N1 m
: h) p/ R8 J: y0 S
| Connected! |; \* ]8 d' f v0 U7 A
4 ^& T3 w7 k2 l0 k* {8 l7 w3 b
| |0 L/ k$ q4 Y) Y; j/ {/ a: ]) p
" @% n) Z; {2 a| sql-statement |
$ s3 ]* \$ L: T% c, ]4 ]/ b% j k: N( ` g+ ~/ t
| help [tablename] |
3 `* `, S) }2 Y, L
! u% X' f/ {& `6 Y# l* `- `| quit |
$ R% p3 t7 y. h& y3 [# e: L
0 S; x5 Y2 R, [/ B i| |
' ]/ |9 W* U. P7 e, {' v
: d: g; v- u6 S+---------------------------------------+
) d( {# a2 G+ l( V
. T2 ?; V0 e& M5 ^; XSQL> select * from SYSTABLE;
/ K `: u! |( A6 D) g1 ?0 e, c5 P: R& J+ D0 y8 ?; [$ S
.......
5 R1 X8 L$ r1 E7 }" n0 \" ~# F' G
4 B! }8 G( [+ M% S這樣便可確認我們的確能從unixODBC中,正確連接到DBMaker sample4的資料庫!
) H: O5 m1 z2 w5 {( n1 h6 k5 U4 n3 [# Y
PHP+unixODBC+DBMaker! X s/ D {$ ?; ~
現在我們能用unixODBC來連接DBMaker了,剩下來的工作就簡單多了,首先我們先確認我們的php是能夠呼叫odbc function的,先用測試程式看看php是否包含了odbc呼叫:
5 Z3 N; O0 j Z% p n. R- Q=>存成phptest.php
% m" [& [, i4 `然後在Browser底下,查閱Configure Command,是否有--with-unixODBC=shared的文字!
; }+ c7 L1 K" d3 H4 _8 b" y5 X接著再查閱網頁中的ODBC該節,是否顯示ODBC Library為unixODBC!6 i! N, g# N, _& p) C1 L
若是以上都無誤的話,您可以撰寫以下的程式php_odbc.php:, U. }2 n. o; T5 A4 O& t& i+ L* |' ?
" w6 C( u& S ^! S7 U. Y9 h3 [; `很有可能(最少筆者就碰到),此時卻顯示了無法認識odbc function call;這個問題在筆者這邊碰到時,先查了一下php裝設了那些rpm,後來便發現少裝了php-odbc這個套件,不知道是不是Distribution的問題(筆者裝的是RedHat 9.0)。當正確安裝了 php-odbc-4.2.2-17.i386.rpm後,再執行上述程式,便沒有發現錯誤了!
$ f8 ^* ~# y; ]. j* N& n& b! P有關php的設定及它與apache的設定,網站上另有一篇專文,請自行參閱。
) {: N: g1 A5 T至此已經大功告成,user可以自行撰寫幾個簡單的測試程式,測試看看是否可以正確使用DBMaker,開始撰寫自己的網頁囉~
' @- _2 M6 w" k/ k1 m& f
! B) D7 B6 L3 L& M, r$ F結語
8 H. N9 [1 i/ l9 G! u7 G使用至今,我們發現unixODBC至少提供了幾個好處:
: A. ~" W8 O& s3 V提供了Logical DSN對應到實體的Database Name * y9 U# x4 ^9 C5 O, I4 Y
可同時連接不同版本的DBMaker 7 N n# s5 }, U, y
; r* U* R! ^# _( K% b# h6 T
提供了邏輯與實體資料庫的轉換
( n S" x2 V0 a! U這也是為何Windows ODBC Driver Manager為何歷久不衰的原因;透過odbc.ini的設定,將邏輯的資料庫名稱,對應到實際的driver及database name。這樣的設定,也一併解決了下面要說的版本問題
6 F9 A, m% L/ Y6 n- i. W
- ~8 N0 D1 ~8 V# f' I連接不同版本的DBMaker
& A# G" X# ~/ I+ L6 F1 u這是筆者最喜歡的一點!在早期build PHP時,必須要使用下面的方式來生成:
3 f! k- t s$ p& _" ?1 D+ Q./configure --with-apxs=/usr/sbin/apxs --with-dbmaker=/home/dbmaker/4.2 --enable-track-vars
2 t. X$ w* f$ I6 A* F在這樣的設定中,其實已經把DBMaker的版本給設死在面,所build出來的libphp4.so,就是已經設死成只能連接DBMaker 4.2版本。' e% e0 t! l. t. i) j4 t" q6 o* W
若是今天想寫一支php程式能同時連接3.7及4.2時,那要怎麼辦呢?這就慘了,因為在這樣的架構下,是沒有辦法作到的。: v9 \2 [+ L% ~
所以筆者有些機械的php就固定只能連3.7,有些機械就是放4.0;若要跨兩個版本的Database,就只能靠別的方法了。
8 G4 L8 F! y7 `7 y% t* V但unixODBC提供了這一層轉換方式,讓libphp4.so不是設死只能連DBMaker 4.2,而是能動態存取外在的ini檔案後,再去連接DBMaker不同版本的so。這樣一來,筆者就能在同一支程式,靠著不同版本在odbc.ini中的設定,而能同時存取了!( u7 P' x6 M8 L( R. y6 i
0 e" O: ?5 ]5 |: q2 e更多的應用
' ^% Z. u& ^( n$ w5 B' t2 A目前unixODBC已逐漸廣為人所接受,不單PHP,包括Perl、Python甚至Java-ODBC Bridge都能使用。如此一來,所有的資料源都可以集中交由unixODBC來管理,這個發展過程,在Windows Driver Manager發展之時也都有過,而它顯而易見的好處,造成了Driver Manager及ODBC的風行!而也希望透過這篇文章,幫助使用者瞭解它,學習它,使用它,最後能真正地喜歡它!
|