|
管理員
  
|
1#
大 中
小 發表於 2009-6-10 01:48 PM 只看該作者
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
! b. O7 ~+ k8 H7 n" g" c) D) j技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
- \# j0 Z! J) n1 y目錄 , ?/ t5 j' Y% M3 p d9 H( f2 S
1 如何在Linux上安裝 unixODBC + DBMaker! ]3 [; l2 A" I B7 a
. R. ?! r0 j& ^; U6 n \0 v# n
2 unixODBC介紹
! I& Z0 @3 v7 G, P
5 w# P* _- C1 Y4 K" b3 DBMaker簡介
t7 E! X) @* N3.1 DBMaker在Linux上的安裝
1 }# U3 ~0 n; A3 G3.2 下載DBMaker 4.2
% e4 Y+ x% D" ? H8 z4 s9 v3.3 安裝DBMaker
5 P' S+ ~) s+ \& Y5 G5 ~1 B! @4 X3.4 檢視安裝後的環境
( a4 J- l& K; h. v
/ E6 o# j" |6 S3 r0 @% n. v4 安裝unixODBC
7 ?- |/ s8 ], V8 i4.1 設定unixODBC連接DBMaker 4.2, l' a' G ?- ]# t% J
4.1.1 設定Driver
$ G3 V( k R+ l5 \) p$ i8 s. y 4.1.2 設定ODBC DSN
4 o. h9 J9 B; s1 Y) P6 s 4.1.3 測試連接
8 D6 S. d( Y/ w7 H: c/ A" F4.2 PHP+unixODBC+DBMaker
9 i$ k4 F8 @! m! W- D: Z% v2 V8 x# }/ X9 U7 x2 h
5 結語6 V) |) k# U/ ^7 p: p; g* P6 v) h
5.1 提供了邏輯與實體資料庫的轉換5 m* F& N8 |6 K% r5 Y5 e
5.2 連接不同版本的DBMaker) n# w% ?5 A0 O- b' ~4 j0 I
5.3 更多的應用7 e. q& g" T Q4 |1 u3 i% K# H& s
8 o8 z8 Q8 ~4 |" L C+ y
% K9 A. Q1 ~4 ~1 E8 e* B: Y如何在Linux上安裝 unixODBC + DBMaker
: c: N7 v3 [+ q q在Windows中相當好用的ODBC Driver Manager,在Linux中卻一直沒有相同的設定;而現在Linux也有了類似的unixODBC了!在本文中,除了介紹unixODBC的設定外,也會介紹如何透過PHP去連接DBMaker資料庫,及使用unixODBC所帶來的好處。
) ^' ^6 ~+ \; N" \& L! C6 p6 @7 h
6 F- c. m, w+ K4 Y0 V g- q6 X- R" q6 v8 N) @$ G
- W, ?6 I( R; A
7 t+ U' d: l/ B. s6 [" [4 g6 ?; R
unixODBC介紹
* a4 S4 F, s3 b7 B+ @9 Z CODBC(Open DataBase Connectivity)是一個跨平台的標準介面,從1990年代開始推行以來,一直廣為業界所使用,即使如今有ADO或JDBC等新的標準,在業界中卻仍時常見到這種界面。即是因為推廣的時間久及開放式的架構,讓用戶已經習慣且易於去使用它了。 , n. [( m! ]4 V7 W2 C& s$ V
# \6 k2 a' K" e7 Z) r6 R在Windows中,透過ODBC Driver Manager,各家資料庫可個自保留自己的Native Driver,然後使用一層轉接接口,將相對應的ODBC Call轉化成自己的Native API Call;但在User的角度而言,這兩者在外觀上是完全相同的,而各家資料庫則需負責將標準的ODBC Call,轉換成自己獨特的Native Call。
8 m" c( L8 c6 _: Y6 m. f' h1 v
6 E, L$ H3 J: @/ ] J6 z/ w' q Z+ T這樣的使用方式,讓ODBC在推出不久,即廣為用戶所接受,User也都習慣在ODBC Driver Manager中註冊自己的Driver,及設定相關的DSN(Data Source Name)。
1 [2 ~) v; `' F/ R+ w9 G# O" K0 E# k" J( d$ {0 u" s* j
這樣方便的設計,在Linux中,卻一直欠缺相同的機制;使得當要使用各式語言去連接資料庫時,便得依該語言的特性去重build一版可呼叫Native Call的模組(module),而一旦Build完後,若當中需要一些變動(如版本昇級),常常就要重build一次,這樣的設計使得Linux在使用資料庫時,極為不便!!
# D1 J6 `6 m9 U( [. H* x
6 l2 j9 @3 H: S3 L0 I0 T* g$ N! Y有鑑於此,便有一unixODBC的組織嚐試在Linux底下,建立類似ODBC Driver Manager的機制。此一機制與ODBC Driver Manager的功能相仿,便是要能提供Runtime的動態變換功能,讓AP可以透過ODBC Driver Manager,動態地載入不同的資料庫Driver,透過這樣的方式去連接資料庫。 . {" X6 }. P/ v. H
* k2 w) K# I9 ]( L" F: A0 q如今,許多Distribution廠商都已經將unixODBC列為標準安裝的套件,而愈來愈廣為人知,本文即是要安裝unixODBC,並利用PHP去連接DBMaker 4.2資料庫,並由此來看看使用unixODBC所帶來的方便性。有關unixODBC的其他說明,請參閱官方網站。 8 T5 d" @, e' _% K q8 a5 o
" ?% |4 S/ v6 x1 V0 p3 D
DBMaker簡介; r1 B$ f) Y% Y6 D2 U
DBMaker為一跨平台的大型關聯式資料庫,符合SQL 99標準,擁有開放式架構,在處理多媒體、全文檢索上擁有強大的搜尋性能;有關DBMaker Engine部份的介紹,請參閱DBMaker的其他相關文章,本文不再贅述,而只著重在使用unixODBC方式的介紹。 1 y$ T0 g0 r# a- o3 u Y* w
6 b, y+ c& y" N- c- e* T0 o$ h# }. w
首先DBMaker是一跨平台的大型資料庫,故在Windows、Linux上的安裝與使用幾乎是一致的。若您尚未使用過DBMaker,我們簡單介紹如何在Linux上安裝DBMaker,與其他資料庫相較,您會發現在Linux安裝DBMaker是一件相當輕鬆愉快的工作。 7 L% @+ z6 F, E( c
. D( v `8 |; {( E. i
DBMaker在Linux上的安裝7 h, a3 I$ e/ r7 w6 G
加入dbmaker的user 首先您須在Linux底下,加入dbmaker這個user,不要忘記請一併將密碼設定好: # f; c6 ]/ x7 }- |4 Q% B; u
- |3 D4 ^& }6 f: R6 [
. Z1 y9 e% f- ~( c; @[root@support root]# adduser dbmaker) b" g6 K# d% o$ z# U( P# G
[root@support root]# passwd dbmaker$ v; ]# s, R* r4 S
Changing password for user dbmaker.
9 X V' \) ?0 Z1 ONew password: " e, d: i" d+ a; {
Retype new password: 2 g" Q' h: e; Y* s
passwd: all authentication tokens updated successfully.
; \2 ?% r6 O" C
; f1 o* k P2 q( @5 s5 W4 }一般說來,除非另行指定,否則dbmaker的家目錄會放在/home/dbmaker底下。
' F; e" {0 W9 Q$ c9 i4 b3 b# _2 @% K; n( ^
下載DBMaker 4.29 C3 v4 h& ~% F
接下來,請至DBMaker的官方網站下載區,去下載最新的DBMaker 4.2版本,將其放在適當的地方。(本文將其放置在/tmp底下)
6 I4 l' w& W. w; h- ]/ h" w
6 u: J$ C# q; H1 g[root@support tmp]# pwd
1 l3 B/ Q# o( m/ z& r" [2 J$ t1 {/tmp5 H$ p4 a0 V8 t, `2 l% h
[root@support tmp]# ls -al dbm*% ]# N" y/ ?9 S2 k, r1 n
-rwxr--r-- 1 alen alen 34649895 11§ 23 14:48 dbmaker-4.2.0-Linux2.x86.tar.gz
" F7 a2 R3 g9 \5 x. j W[root@support tmp]# tar zxvof dbmaker-4.2.0-Linux2.x86.tar.gz <==解壓縮7 t( {' A* P; p1 P/ O! z8 i2 _' s
dm420.tar0 @9 A: A) y) L2 |, [4 ~
setup
. B6 N* V$ `9 g( n% l6 L" w; b, x8 S- K+ H7 d1 r7 Q
安裝DBMaker
7 v! Q- @: R, |3 O0 X+ H, B接下來,請切換至dbmaker這個user,並執行setup程式,為了能正確執行setup,請將setup程式改變模式成「可執行」。
7 m* F: {" l$ z9 U0 E, c% ~/ s& j0 B+ d, S7 i* P
, a4 P$ t/ P I- m4 `8 p1 G[root@support tmp]# chmod a+x setup <==切換成可執行" V/ W( b( N$ f4 i
[root@support tmp]# su dbmaker <==切換成dbmaker後,進行安裝
. |. b! j% R k) y8 l* U[dbmaker@support tmp]$ ./setup
5 j/ n$ e6 ]1 y5 c; @2 ]7 a
: ]& M5 @' }' C4 E$ ?# Z6 i
" A& T) n% h5 @7 F==============================================================! v' Q( Z9 u I9 L
DBMaker Database Management System Installation
N" w* O8 ?, H+ K$ O6 K. P+ {0 PFor DBMaker Release 4.2.02 Q; q+ {8 J# X% }6 L% W. r5 D& N7 j
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
& r3 @' h. Q4 x" c, k2 J! \==============================================================
$ o/ O$ a9 V$ | uInstall Components:3 A: A! _6 ^2 P
[A] DBMaker Server .............. (yes) Language: [ Western, Big5 ]5 s. `$ a/ N) y I% @2 L8 D- ]) j
[B] DBMaker Client ............... (yes)4 g0 E! f$ D Y- r R1 g, e; t8 Z' s* c
[C] Sample Programs............... (yes), E; F# H; h+ }1 S* l
[D] Tutorial Database.............. (no)
$ F5 ~# a$ X# l9 V# d7 d8 U3 Z% \[E] Documentation ................. (no)
B8 f2 v- z; m/ {4 W+ ~Install Path:1 x, U8 x7 f/ I6 s3 ?
DBMaker Home directory: /home/dbmaker
6 ^; e# o' W2 z- p+ R! |, R+ [[Y] Start Install [N] Quit
: O/ ]. ~ J- u0 l; DPlease press [ A B C D E Y N ] Y <==為簡單計,請直接使用「Y」進行安裝
+ C P( a% D0 a5 i# Q4 |* n& k
' k' Q+ B, ^+ G% Z當您按下Start Install後,DBMaker就開始安裝,約1-3分鐘內,安裝便可完成,可說是又快速、又方便呢!# L1 I' a2 P5 r' |6 ^# L- z7 T% }4 e- b
& e' n7 a7 X& B7 M. g
檢視安裝後的環境+ `9 y; b* M0 z4 `6 v; e) F
在上述安裝完DBMaker後,DBMaker會自動產生一個範例資料庫-DBSample4,我們可以用下面的方法來啟動這個資料庫:9 y4 J( [( j) j7 v/ D* j, [' z
$ ?: u' s) p5 C: S2 i- k--------------------------------------------------------------------------------
* N0 C2 [0 P0 G[dbmaker@support bin]$ cd /home/dbmaker/4.2/bin <=切換至命令目錄,注意此時使用的user為dbmaker!
- `. M6 q# T9 v: U[dbmaker@support bin]$ ./dmserver dbsample4 <= 使用此命令來啟動資料庫0 f0 x3 s, Y8 w9 Z9 B
DBMaker 4.2.0 (#4721, 20040924)4 P; ?7 v+ j' p% t3 ]; v4 T& s, S9 t
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.8 }: A; r- ^1 a* ~
SQL Server bound to port 2450 <==已在埠位2450上準備接收request* z$ b6 ^, M* o0 T8 Q' r
Database Server is running in the background mode.+ Y. {' z) w5 {" V) k
Process ID = 15668/ Q( H" T8 Q3 n/ T0 b
/ r3 c6 q9 O8 P2 u7 A
這樣資料庫就啟動了,您可以參考DBMaker的其他手冊,使用其他工具來操作這個資料庫;(有關資料庫服務的埠位、名稱等設定,都記錄在/home/dbmaker/data/dmconfig.ini文檔中,有關此文檔中的相關設定,也請參考DBMaker線上手冊)。
/ ?, Y# [1 [. C' O. O在安裝完DBMaker後,應該就可以在/home/dbmaker/4.2/lib/so中,找到DBMaker的odbc native driver。& z& l6 C) j1 |5 p+ K' o1 Z
& ^; E6 h6 T+ D: C& U[dbmaker@support bin]$ ls /home/dbmaker/4.2/lib/so/
9 |; s7 Q8 H" z- w0 Y. V- \libdmapic.so libdmjdbc42.so libdmxtt.so libiconv.so.2.2.0/ X: S4 w* ^& p9 B5 ]+ }7 U
libdmapis.so libdmjsvrut.so libexpat.so libxerces-c.so
6 L+ p( `. |/ C4 E+ v7 L8 plibdmdttut.so libdmudf.so libiconv.so libxerces-c.so.212 M4 x# N9 M% Z7 N' ^) h
libdmjdbaut.so libdmxtm.so libiconv.so.2 libxerces-c.so.21.0& G8 v2 Q3 [. v: L0 o
( {0 o7 F3 L1 y
其中的dmapic.so,便是DBMaker的native driver;由於DBMaker在開發之初,便是使用ODBC的開發介面,所以DBMaker的Native Driver,便是一符合ODBC API標準的Native Driver;而不像有些資料庫廠商,事實上還是需要另一層薄薄的轉換接口,才能將ODBC API轉成實際的Native Driver API。
6 i/ {0 j( G8 a! k* l! C6 I. Y2 x# Z: O$ s5 Q6 u: |* w
安裝unixODBC
2 o7 Z' L+ ?" b( o接下來談到本文的主角-unixODBC,由於多數人已習慣RedHat的rpm安裝方式,故本文會使用rpm來安裝,至於若要自行build者,請參閱unixODBC的官方網站。( d" \/ ]! L- N1 i* M
首先至官方網站中取得最新的unixODBC package,本文使用的是2.2.3-6的版本。
5 _% v! N' a! R/ V8 M$ P, ^" x接著,我們使用rpm將unixODBC安裝上去:
m) K4 ^9 f) ~; K; A7 u x$ O( \
[root@support tmp]# rpm -ihv unixODBC-2.2.3-6.i386.rpm - |; h9 s* L* z3 c# R
warning: unixODBC-2.2.3-6.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e5 S4 f; @ C3 K7 |" h
Preparing... ########################################### [100%]
. v! N# U( |% q ~# w[root@support RPMS]# rpm -ql unixODBC|more<==檢查一下到底安裝了那些檔案!. V4 b9 F8 d( H
/etc/odbc.ini <==這是安裝DSN的檔案,本文的重點5 {& {9 E" K0 M
/etc/odbcinst.ini <==這是Driver Manager所放置的Driver設定區,亦為本文重點* x1 }5 F7 w ^3 H: [
/usr/bin/dltest
) Q) U9 g9 A1 n% n$ \/usr/bin/isql. j$ [. S: s& C2 @
/usr/bin/iusql/ L+ b- r& c3 K" S1 P- S/ @ A
/usr/bin/odbcinst
% h7 w* d3 O1 P8 U Z" G1 ?) |/usr/bin/odbctest
! ^- S0 W2 K! I* |" f# G" ^/usr/lib/libboundparam.so.1
% d) {9 D5 I: t. K) B5 R/usr/lib/libboundparam.so.1.0.0" o2 d8 M% G0 H+ \$ ?2 K0 G4 e9 r) N
/usr/lib/libesoobS.so.1
% I E) y' B8 T. A; @/usr/lib/libesoobS.so.1.0.0
" S' K H+ o8 E8 U7 I/usr/lib/libgtrtst.so.1
6 g% Y2 Q2 B, |4 r/ \/usr/lib/libgtrtst.so.1.0.0
8 G6 ~* v! c6 `. [) K/usr/lib/libnn.so.1
T- N! K5 {4 d5 H. h) u# Y/usr/lib/libnn.so.1.0.06 B5 G5 m0 r/ _: k
/usr/lib/libodbc.so
' I1 r, v9 X# n% ?0 h/usr/lib/libodbc.so.1( v, G0 f- g/ J
/usr/lib/libodbc.so.1.0.0( C9 ^8 v- q1 y9 L" N; k
............
4 @0 a7 ^) M6 d# Z& R0 o @
! a$ H8 K+ Z3 Y, C" ]) ^% g) J4 }9 I' f" F% C* ?% W5 x3 v @) Y
6 ?& r) L7 ^7 ~8 z! B+ j
設定unixODBC連接DBMaker 4.2
0 S2 U) g- f. D4 R7 v如上所述,我們接下來就是要將unixODBC與DBMaker的Driver串接在一起,如同在Windows上,去設定Driver Manager一樣。* F2 q6 }$ ]! F& z
+ {+ z, a) {; A- K1 z設定Driver
7 d h% h7 `# \4 _3 \在Windows的Driver Manager中,我們所使用的Driver,事實上也是需先向Driver Manager登記的,這個動作由於多數是由資料庫廠商的安裝程式作掉,所以User可能完全不知覺。- s4 o1 B& C* C4 _
但在unixODBC中,則必須由使用者自己來進行註冊Driver的動作,這個登錄的動作,即是要在/etc/odbcinst.ini中加上DBMaker相關Driver的資訊,我們首先打開這個檔案,並加上下面的幾行:* P" T( p0 U* x ^0 h- j
5 ], c/ r; c9 C ^- X5 D[root@support RPMS]# more /etc/odbcinst.ini2 V8 n6 i9 W2 f- B
# Example driver definitinions( N+ E; Y4 W: y5 p! f6 k" M
#
- x8 b( W3 H% ]7 i! R' {0 ^- F2 \7 X#/ t$ A" O& u) J" `! m
* }' A, J- w% u8 T0 A5 e# Included in the unixODBC package0 j9 B2 K. y9 e' F1 a# E
[PostgreSQL]
9 ~$ s5 _, a/ c# EDescription = ODBC for PostgreSQL
2 @0 Z! b- a4 w3 B: E- m" z7 jDriver = /usr/lib/libodbcpsql.so
, ^' b! v/ E3 h: N; Y" G- l2 L$ uSetup = /usr/lib/libodbcpsqlS.so( X; @. [$ e; C
FileUsage = 1% p, ~9 I# w V& k
....
: t$ E4 r* \# @, N( U" |[DBMaker 4.2 Driver] <==這就是您向unixODBC註冊的Driver名稱,可自行定義4 ~, P% D P# r1 C
Description = ODBC for DBMaker 4.2
V- ^% L6 |3 w& n: CDriver = /home/dbmaker/4.2/lib/so/libdmapic.so <==必須登記您環境中,DBMaker所使用的Driver完整路徑# X$ Q$ B+ [2 Y" A$ ~
#Setup = /usr/lib/libodbcdbmakerS.so& b8 A8 N4 v X" I& @: |
FileUsage = 0$ y2 n0 h7 z! ^
) ?' l8 s) y: Y# m9 h
/ D& I/ b" g+ u) k1 b在設定Windows的Driver Manager時,在加上一個新的DSN時,資料庫廠商通常都提供一個安裝程式,讓使用者可以登記如Server位置、Port Number、須要使用什麼認證…等等。這個畫面就是上述的「Setup」,由於DBMaker目前在unixODBC中並未提供安裝畫面,故須暫時將它關閉;待之後的版本提供後,再把它開啟。
, q: t) F. L( p- t+ D
6 p; f8 L) x; v% O設定ODBC DSN
6 v1 q, t3 S' a2 y接下來便是設定Data Source Name了(DSN),在Windows時,有所謂的System DSN及User DSN,其實主要的差別便是System DSN是可為所有User所存取,而User DSN則只能為某特定user存取;當login成另一位user時,便看不到原來User登錄的DSN了!: q/ g |) s5 P h# t/ z# ^6 r
而在unixODBC中,則是使用不同位置的檔案,來存放System DSN及User DSN,在我們的環境中,System DSN會放在/etc/odbc.ini,而User DSN則會放在個別User的家目錄/.odbc.ini。0 g3 U1 {# H) o
由於我們要使用Web的PHP來連接DBMaker,所以要設定System DSN,以下是我們所放置的內容:' G' r6 c) }! R& i0 ]6 K |- p% w
! I9 b7 d" F* Q. s0 }4 o( D: R
[dbsample4]+ O; d( b' a7 `- |1 Z) W! u y
Description = Database for dbsample4) U5 t2 \9 w6 s K. `
Driver = DBMaker 4.2 Driver <==注意,此處須與之前Driver設定的名稱相同 d+ p. s8 C# s
Database = dbsample4 <== 資料庫名稱
2 K! a e% P% a. wHost = localhost <== server所在位置7 |+ D# u: R! z. F7 U; l1 X
Port = 2450 <== 埠位置
% y' ?' g' h* ?9 z9 \1 _4 WUser = SYSADM <==使用名稱(DBMaker預設所使用的管理者名稱)
8 i5 y2 ]7 F6 M$ H, bPassword = <==使用密碼 (DBMaker預設所使用的管理者密碼)
2 U! H U8 k- P7 _當然您可以使用不同的帳號/密碼登入,但此處為方便,使用DBMaker所預設建立的管理者帳號SYSADM,及預設的密碼(空白)2 K/ |6 P% s: z# w5 j" B& @6 c
3 i- ]- B; w/ \. @# p( c9 B5 m! V9 A
測試連接6 G- C+ T) b& P( i8 w
接下來,我們使用unixODBC所附的isql來連接dbsample4的資料庫,isql的標準語法為:% [( [# L4 z( }! A: g
! L6 G$ d9 B$ Q1 C6 \isql DSN [UID [PWD]] [options]
! P8 m8 T8 ?; P# i" c9 I, J1 ?1 N我們直接用下方命令來連接資料庫:2 u+ v2 t' m# w3 s7 \0 y1 n; F' A
' x1 o2 k0 i- I, i
[root@support RPMS]# isql dbsample4 sysadm
# l# e% j3 M+ n8 e+ A! h
% b$ v6 Q& @1 N, h- l$ n1 e) ~+---------------------------------------+- w" o" H$ `# b3 U% e: `) H# Y x
/ \, Q }1 [8 G5 R* j* y
| Connected! |' M* t# l& M* s# M& Q8 K
- _/ C% `# p8 ]! n P
| |4 H1 U, @; j7 e% B4 ~* ?4 ?8 `
Y1 \7 O" w- `: j3 J7 ]& g
| sql-statement |
5 O0 x) g' A( g9 E4 W% J1 F6 ?' \& u/ y3 H4 c* h, [9 B+ w/ \6 k; ~
| help [tablename] |7 _9 B9 e' A! d% A/ E+ |
% f) y# w0 P& q: z
| quit |
, u* [6 c* ]; k; n) W- V
2 j, a9 G8 P+ \* _& Z9 n| |" _' P; p& b' U$ t
( @( W" s# a: q/ ?
+---------------------------------------+" i/ {: X: D( J6 \
% e, z9 r# s2 F# m1 D m$ K6 _
SQL> select * from SYSTABLE;5 ]; C- M n5 P9 o
& q1 R$ p: g ~
.......
; J' D8 h. C* _+ U; `1 n" |1 w. N! U3 ~* ?5 L2 o: ~3 O, L5 u
0 N C" Z3 P. g/ B這樣便可確認我們的確能從unixODBC中,正確連接到DBMaker sample4的資料庫!
$ M2 o) E2 |4 ]$ P0 K( C
5 ^/ h, W) m) _PHP+unixODBC+DBMaker
( M3 d$ a4 U4 X現在我們能用unixODBC來連接DBMaker了,剩下來的工作就簡單多了,首先我們先確認我們的php是能夠呼叫odbc function的,先用測試程式看看php是否包含了odbc呼叫:8 M5 R( O7 B! o! v# p
=>存成phptest.php
0 l& u, Y U1 R$ [* E, F2 K然後在Browser底下,查閱Configure Command,是否有--with-unixODBC=shared的文字!5 c, o5 S B, |+ Y+ y' _
接著再查閱網頁中的ODBC該節,是否顯示ODBC Library為unixODBC! e' I/ k n/ f# e: V' Z. c& T2 h
若是以上都無誤的話,您可以撰寫以下的程式php_odbc.php:
: I5 s2 r+ R+ y8 p1 R+ g
1 W9 F# D8 v- z- Z5 U6 }很有可能(最少筆者就碰到),此時卻顯示了無法認識odbc function call;這個問題在筆者這邊碰到時,先查了一下php裝設了那些rpm,後來便發現少裝了php-odbc這個套件,不知道是不是Distribution的問題(筆者裝的是RedHat 9.0)。當正確安裝了 php-odbc-4.2.2-17.i386.rpm後,再執行上述程式,便沒有發現錯誤了!
% K; e+ y, ]" D: R' ]) D5 k有關php的設定及它與apache的設定,網站上另有一篇專文,請自行參閱。
, \0 I4 @' p8 V/ ]9 W0 z至此已經大功告成,user可以自行撰寫幾個簡單的測試程式,測試看看是否可以正確使用DBMaker,開始撰寫自己的網頁囉~
# R3 D; | A1 f( n5 \+ m) k' p2 S( e8 G& x3 w
結語
4 i& ]) W# I- Z/ K1 Y0 ?1 V使用至今,我們發現unixODBC至少提供了幾個好處:
8 K+ B& L% h3 v% d9 l& g) W- n提供了Logical DSN對應到實體的Database Name 2 ~* Z% R' s e% u, r1 ~
可同時連接不同版本的DBMaker ' E% E" _# R, ^4 q9 @5 K( d8 i
$ s: A% G8 S' {/ b; O
提供了邏輯與實體資料庫的轉換" E3 L" l3 h3 Y5 r, u6 h% \
這也是為何Windows ODBC Driver Manager為何歷久不衰的原因;透過odbc.ini的設定,將邏輯的資料庫名稱,對應到實際的driver及database name。這樣的設定,也一併解決了下面要說的版本問題: J9 G1 i8 a( O
7 g* Z! Q# R# _連接不同版本的DBMaker
) Y* |" X# _6 S$ ]這是筆者最喜歡的一點!在早期build PHP時,必須要使用下面的方式來生成: L+ c P& c+ h( W' ^' K+ c' ^; n
./configure --with-apxs=/usr/sbin/apxs --with-dbmaker=/home/dbmaker/4.2 --enable-track-vars
% m% w- v" a) _" B% k/ O在這樣的設定中,其實已經把DBMaker的版本給設死在面,所build出來的libphp4.so,就是已經設死成只能連接DBMaker 4.2版本。 c- a7 Z0 }5 {( b, E( W; e8 n
若是今天想寫一支php程式能同時連接3.7及4.2時,那要怎麼辦呢?這就慘了,因為在這樣的架構下,是沒有辦法作到的。
( u4 c+ g; X* M. |" e6 i所以筆者有些機械的php就固定只能連3.7,有些機械就是放4.0;若要跨兩個版本的Database,就只能靠別的方法了。
9 G& @2 U6 o. r但unixODBC提供了這一層轉換方式,讓libphp4.so不是設死只能連DBMaker 4.2,而是能動態存取外在的ini檔案後,再去連接DBMaker不同版本的so。這樣一來,筆者就能在同一支程式,靠著不同版本在odbc.ini中的設定,而能同時存取了!
, f @( S& H$ ?1 T, H( I. `* R1 z E" e% {: }9 I
更多的應用. o5 U5 I, Z8 V5 {' `
目前unixODBC已逐漸廣為人所接受,不單PHP,包括Perl、Python甚至Java-ODBC Bridge都能使用。如此一來,所有的資料源都可以集中交由unixODBC來管理,這個發展過程,在Windows Driver Manager發展之時也都有過,而它顯而易見的好處,造成了Driver Manager及ODBC的風行!而也希望透過這篇文章,幫助使用者瞭解它,學習它,使用它,最後能真正地喜歡它!
|