|
管理員
  
|
1#
大 中
小 發表於 2009-6-10 01:48 PM 只看該作者
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
& o; Q/ `* M# b. ^& I8 c技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
7 i* N4 A# i4 x1 j9 l3 J目錄
6 y6 B T; i) V. |7 l& q1 如何在Linux上安裝 unixODBC + DBMaker
. v* d8 q, q9 o: L7 s4 ~, ~' N9 ?' K% I) u% [! G( m# D; o
2 unixODBC介紹; X4 g* ]5 ?, u! j5 z
4 }; i( S; [$ z. P0 Z3 DBMaker簡介
% r& n8 _ M5 I, g( w _3.1 DBMaker在Linux上的安裝) r' y- d' B# |. B3 P( {; x
3.2 下載DBMaker 4.2& T' p4 }0 S& V) F3 [, b: }$ A
3.3 安裝DBMaker
, D8 W5 x) X# y; o5 J$ d2 o3.4 檢視安裝後的環境, n, s; M/ O+ j& d9 n8 y, j
, B4 T) X; L" Z5 a1 I
4 安裝unixODBC
7 i# C D( k# j3 S& O- C4.1 設定unixODBC連接DBMaker 4.2
* ]8 `! s/ i1 x$ U2 R; A5 z1 n 4.1.1 設定Driver8 { H1 W0 o$ b, C5 ]
4.1.2 設定ODBC DSN
" k' c+ J4 Z' B4 m1 W 4.1.3 測試連接
0 L3 S/ H. e7 x5 F( I4.2 PHP+unixODBC+DBMaker- m: U1 F% Z O& N
* C7 ]- G' R7 y! D- y5 結語
, ~* u2 B4 T8 \6 G5.1 提供了邏輯與實體資料庫的轉換; U) ~) V; f. k( U# {7 x& Y
5.2 連接不同版本的DBMaker+ }0 D* u9 Q; l" ~4 D: Z
5.3 更多的應用
. {9 ~" g2 W: Y; S$ J' _1 Q" o3 W, V5 R" X4 O6 c
' O( {4 [4 {$ F0 D; j如何在Linux上安裝 unixODBC + DBMaker8 A9 l. f) C. a k- j! ^: {, s, n# _
在Windows中相當好用的ODBC Driver Manager,在Linux中卻一直沒有相同的設定;而現在Linux也有了類似的unixODBC了!在本文中,除了介紹unixODBC的設定外,也會介紹如何透過PHP去連接DBMaker資料庫,及使用unixODBC所帶來的好處。
3 F* Q7 J# ? q7 A+ w
4 S+ d3 j) b+ ~, l6 K6 p
7 [. R# t+ b: W
4 s7 U' q( `" Y& c Y
4 b1 e) d5 B C# v7 E/ JunixODBC介紹
* U u g. _6 N" Z6 I- h% HODBC(Open DataBase Connectivity)是一個跨平台的標準介面,從1990年代開始推行以來,一直廣為業界所使用,即使如今有ADO或JDBC等新的標準,在業界中卻仍時常見到這種界面。即是因為推廣的時間久及開放式的架構,讓用戶已經習慣且易於去使用它了。
& E% U# w( N8 G2 R: b
- u$ U. Q7 L/ k, L- G! \/ a在Windows中,透過ODBC Driver Manager,各家資料庫可個自保留自己的Native Driver,然後使用一層轉接接口,將相對應的ODBC Call轉化成自己的Native API Call;但在User的角度而言,這兩者在外觀上是完全相同的,而各家資料庫則需負責將標準的ODBC Call,轉換成自己獨特的Native Call。
: N4 ?4 o& {- B$ d$ L9 X. M5 a8 B, O0 O2 y! j( i
這樣的使用方式,讓ODBC在推出不久,即廣為用戶所接受,User也都習慣在ODBC Driver Manager中註冊自己的Driver,及設定相關的DSN(Data Source Name)。 6 j% S; H9 V# c' U/ c
8 O5 B9 t( k) H! d! r5 b( b7 P這樣方便的設計,在Linux中,卻一直欠缺相同的機制;使得當要使用各式語言去連接資料庫時,便得依該語言的特性去重build一版可呼叫Native Call的模組(module),而一旦Build完後,若當中需要一些變動(如版本昇級),常常就要重build一次,這樣的設計使得Linux在使用資料庫時,極為不便!! " y4 ~9 h3 `) Q$ z( E$ V7 T h
4 c6 `+ j" F, }. N
有鑑於此,便有一unixODBC的組織嚐試在Linux底下,建立類似ODBC Driver Manager的機制。此一機制與ODBC Driver Manager的功能相仿,便是要能提供Runtime的動態變換功能,讓AP可以透過ODBC Driver Manager,動態地載入不同的資料庫Driver,透過這樣的方式去連接資料庫。
. s. ~* D `) ] k f1 n4 `2 O) p0 V s
如今,許多Distribution廠商都已經將unixODBC列為標準安裝的套件,而愈來愈廣為人知,本文即是要安裝unixODBC,並利用PHP去連接DBMaker 4.2資料庫,並由此來看看使用unixODBC所帶來的方便性。有關unixODBC的其他說明,請參閱官方網站。
/ k9 i; u6 \' C( r: b' v* J& f: n: }1 F+ q4 K
DBMaker簡介% T. d, y& K8 v0 y. b! h
DBMaker為一跨平台的大型關聯式資料庫,符合SQL 99標準,擁有開放式架構,在處理多媒體、全文檢索上擁有強大的搜尋性能;有關DBMaker Engine部份的介紹,請參閱DBMaker的其他相關文章,本文不再贅述,而只著重在使用unixODBC方式的介紹。
6 x( v/ B. J* C# V, }2 n2 w
) C5 D" ^. f" Y$ W4 V% D9 ?首先DBMaker是一跨平台的大型資料庫,故在Windows、Linux上的安裝與使用幾乎是一致的。若您尚未使用過DBMaker,我們簡單介紹如何在Linux上安裝DBMaker,與其他資料庫相較,您會發現在Linux安裝DBMaker是一件相當輕鬆愉快的工作。 * J4 H e4 u: K! o" B3 F- d
+ N$ r& n/ ?' W/ u7 P& M
DBMaker在Linux上的安裝
8 V) g7 }5 b+ j' h. q: {- z加入dbmaker的user 首先您須在Linux底下,加入dbmaker這個user,不要忘記請一併將密碼設定好: ( n* e" x' w1 K' f# R
4 ]2 p B3 G6 a9 l9 J: R
$ A- x) j$ h9 ^ ~. b0 N: b
[root@support root]# adduser dbmaker
/ u7 s! \8 E; `! e. E: W N! l6 Z[root@support root]# passwd dbmaker
# v* Z& x) }$ P/ y) p+ xChanging password for user dbmaker.+ o+ K# I t5 g" B; m$ ~ {
New password:
, m) [+ S/ {& F# o4 S9 cRetype new password: * x1 _: c j9 c1 Z; T. w% L
passwd: all authentication tokens updated successfully.
% `) ~$ K, l( s$ y! N& J* f8 a5 S+ t+ _/ ~- d; |7 p5 u' S
一般說來,除非另行指定,否則dbmaker的家目錄會放在/home/dbmaker底下。 & B6 ~$ [/ v( \6 g: Q5 ~
; V" ]" f+ e- ?& X5 k# c% T# c
下載DBMaker 4.2
: v$ f6 j4 z& I5 x接下來,請至DBMaker的官方網站下載區,去下載最新的DBMaker 4.2版本,將其放在適當的地方。(本文將其放置在/tmp底下) 1 P- o4 d. O5 O9 L1 |
8 [" S' k3 q$ O6 n( Z: o[root@support tmp]# pwd+ \( s! S9 |0 }' L" u
/tmp9 c; k3 I7 C6 ]6 C
[root@support tmp]# ls -al dbm*2 l3 g/ r# G/ N* w6 L
-rwxr--r-- 1 alen alen 34649895 11§ 23 14:48 dbmaker-4.2.0-Linux2.x86.tar.gz' ~- p( O" s$ E6 ^3 s& d
[root@support tmp]# tar zxvof dbmaker-4.2.0-Linux2.x86.tar.gz <==解壓縮
. N) F$ F8 Y" h* Rdm420.tar" V6 r0 ?, K! p6 r" d4 I
setup$ d4 V0 z; I% _* e
8 \5 \3 [) f/ f: z# O
安裝DBMaker- l4 T4 z' a0 ^
接下來,請切換至dbmaker這個user,並執行setup程式,為了能正確執行setup,請將setup程式改變模式成「可執行」。 & g8 l8 [" F& e8 S8 R1 `
, ~/ { h4 m) x5 n( ~
* H* z; Q0 |3 n7 I+ y# D[root@support tmp]# chmod a+x setup <==切換成可執行7 E# Y& j4 [7 E! s
[root@support tmp]# su dbmaker <==切換成dbmaker後,進行安裝- [* a9 b9 @ \- g _
[dbmaker@support tmp]$ ./setup
/ s( @6 T7 [& ?# j2 E9 }4 E( I& C( F" v3 F P# m ~+ }* P+ L
8 c. e# L, q+ a* }- B
==============================================================
3 |% d( Z" X( }2 A0 MDBMaker Database Management System Installation
' @7 ?* m8 z# q+ g |% u1 D0 t$ RFor DBMaker Release 4.2.0
2 j. I/ q( M( j6 D% BCopyright(C) 1995-2004 CASEMaker Inc. All rights reserved.' |5 S* p9 N0 E1 v: r- M
==============================================================6 z4 E5 o9 W2 d z, l. O
Install Components:7 m8 F, q3 x* A- f3 N, c
[A] DBMaker Server .............. (yes) Language: [ Western, Big5 ]2 V6 R" O( K/ ?$ T% Q7 d3 |
[B] DBMaker Client ............... (yes)) \: q2 k( J ]
[C] Sample Programs............... (yes)
& A1 q6 d/ z% X6 {+ W; Q( h" P[D] Tutorial Database.............. (no)1 z' n* u- g% d: l ~+ {# q
[E] Documentation ................. (no)& w" j& h2 X) Q g
Install Path:1 ?+ e; z6 n3 B4 n$ u
DBMaker Home directory: /home/dbmaker) _7 T1 \5 o* [9 l
[Y] Start Install [N] Quit: w7 M* u O7 j5 V: G7 Y2 I
Please press [ A B C D E Y N ] Y <==為簡單計,請直接使用「Y」進行安裝
' s# n4 [5 s1 [% l4 [ i. y6 e2 c* `
當您按下Start Install後,DBMaker就開始安裝,約1-3分鐘內,安裝便可完成,可說是又快速、又方便呢!
1 `# L9 H* l9 _. l1 N. t7 M, X. }2 R& G/ d2 Z5 [/ B' X
檢視安裝後的環境
) R9 \: _, [$ K! n; [在上述安裝完DBMaker後,DBMaker會自動產生一個範例資料庫-DBSample4,我們可以用下面的方法來啟動這個資料庫:
7 s1 I M# m% J' w+ |, Q1 g" m: z, w0 n1 t c
--------------------------------------------------------------------------------7 E9 ~' t. ?1 H/ V* K
[dbmaker@support bin]$ cd /home/dbmaker/4.2/bin <=切換至命令目錄,注意此時使用的user為dbmaker!
9 r5 W, i: \0 p1 \[dbmaker@support bin]$ ./dmserver dbsample4 <= 使用此命令來啟動資料庫
! p f. V O: ?( l9 V6 ~2 ~5 d$ `DBMaker 4.2.0 (#4721, 20040924)
" T7 u9 L/ N: ~3 n; N8 \Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.6 N: M' ?( `! S7 d8 m8 `, T
SQL Server bound to port 2450 <==已在埠位2450上準備接收request
1 }( l1 L7 p. x' [7 b u( E, nDatabase Server is running in the background mode." v: ~1 b. p/ y, u
Process ID = 156681 M5 E+ a( \7 j" k7 p0 ~! g
3 a) I6 l3 P1 a0 _這樣資料庫就啟動了,您可以參考DBMaker的其他手冊,使用其他工具來操作這個資料庫;(有關資料庫服務的埠位、名稱等設定,都記錄在/home/dbmaker/data/dmconfig.ini文檔中,有關此文檔中的相關設定,也請參考DBMaker線上手冊)。) n6 h* @) V9 `( `' E2 Q
在安裝完DBMaker後,應該就可以在/home/dbmaker/4.2/lib/so中,找到DBMaker的odbc native driver。
7 {) g8 y* a6 @# e5 @* s- @
7 E# s4 P- w6 {# }! x1 ^" T[dbmaker@support bin]$ ls /home/dbmaker/4.2/lib/so/
- ^7 T7 O& |& J/ [ g. N5 hlibdmapic.so libdmjdbc42.so libdmxtt.so libiconv.so.2.2.0
/ T! p- y2 [) klibdmapis.so libdmjsvrut.so libexpat.so libxerces-c.so- M8 b( i+ G+ e; O; G$ Y7 |
libdmdttut.so libdmudf.so libiconv.so libxerces-c.so.21/ K. R& F! ] w) E
libdmjdbaut.so libdmxtm.so libiconv.so.2 libxerces-c.so.21.01 f. D' S0 @8 S" w$ o
. ^- @* o* B7 w4 y: U- E, D其中的dmapic.so,便是DBMaker的native driver;由於DBMaker在開發之初,便是使用ODBC的開發介面,所以DBMaker的Native Driver,便是一符合ODBC API標準的Native Driver;而不像有些資料庫廠商,事實上還是需要另一層薄薄的轉換接口,才能將ODBC API轉成實際的Native Driver API。
6 A1 P6 X' N5 `2 e- Q% l" r: E2 E; L* z
安裝unixODBC) q8 A$ n/ d9 v5 D# A" ^3 r% Z
接下來談到本文的主角-unixODBC,由於多數人已習慣RedHat的rpm安裝方式,故本文會使用rpm來安裝,至於若要自行build者,請參閱unixODBC的官方網站。
' y; y7 B! ?& e4 h! C首先至官方網站中取得最新的unixODBC package,本文使用的是2.2.3-6的版本。" Q* k1 Y5 Q4 k5 \0 H2 g- S6 }) ]/ N
接著,我們使用rpm將unixODBC安裝上去:
# x% z2 L6 w |! Y. L4 ?" p$ d }" |* t& e6 y# u) ^/ r5 [
[root@support tmp]# rpm -ihv unixODBC-2.2.3-6.i386.rpm
. d* z' [, [) L( Twarning: unixODBC-2.2.3-6.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e% |+ a/ {" h4 V8 E8 \9 G
Preparing... ########################################### [100%]1 O( K) m# u, y2 C3 a9 I" v
[root@support RPMS]# rpm -ql unixODBC|more<==檢查一下到底安裝了那些檔案!6 C$ R4 C: G9 ^9 P
/etc/odbc.ini <==這是安裝DSN的檔案,本文的重點
0 B" J- v; f, z6 w% U* c/etc/odbcinst.ini <==這是Driver Manager所放置的Driver設定區,亦為本文重點
& y7 t3 e# u4 X, E0 A m& q, q4 v/usr/bin/dltest1 {- g$ o4 y$ t+ z2 v, B
/usr/bin/isql
# l4 h8 M2 b/ E2 b/usr/bin/iusql
2 ^8 \& G. W. X1 f) g/usr/bin/odbcinst
1 b7 t% k. Y$ ?& h- \ X1 R; ^/usr/bin/odbctest
9 y! |2 f d o) l: I. B% C! R/usr/lib/libboundparam.so.1/ f: k) A0 {7 T( b5 U7 ~9 ^- n
/usr/lib/libboundparam.so.1.0.0
& O* i8 e) R/ P4 U0 L/usr/lib/libesoobS.so.1
$ p( R' O# g) z) G8 x6 f/usr/lib/libesoobS.so.1.0.0- x9 q6 V0 O- O4 C" }' Q$ }# z# `
/usr/lib/libgtrtst.so.1
F; `# f6 O6 @/usr/lib/libgtrtst.so.1.0.0
8 S: J) {* [% A) Z4 a( G/usr/lib/libnn.so.15 O I/ m5 \8 \- g& x( f3 U
/usr/lib/libnn.so.1.0.05 y0 Y3 g4 d+ A9 p
/usr/lib/libodbc.so
D8 W' M2 `8 L% @/usr/lib/libodbc.so.1# n- H1 h1 \" j( D! M
/usr/lib/libodbc.so.1.0.0$ j* L, R4 Y& H; Y7 ~) [
............
$ ^7 n7 W- F7 E& y7 Y2 \: |# G% i' e0 ?& R3 c4 b: G" S
; K8 q# H" ]3 d4 F/ d& M* E; s3 W; C$ w0 }9 c
9 p F; q8 ~! a3 i1 f3 I+ A設定unixODBC連接DBMaker 4.22 A. I$ Y0 }5 l S3 m/ X
如上所述,我們接下來就是要將unixODBC與DBMaker的Driver串接在一起,如同在Windows上,去設定Driver Manager一樣。
: K8 x1 i5 X1 |5 s2 @* Z
L, i/ s) }- V$ M/ r& m設定Driver
4 [1 R; J/ n; P3 b' F9 P. y$ d6 `. A在Windows的Driver Manager中,我們所使用的Driver,事實上也是需先向Driver Manager登記的,這個動作由於多數是由資料庫廠商的安裝程式作掉,所以User可能完全不知覺。
7 U$ Q7 M; I8 h0 p8 P/ M但在unixODBC中,則必須由使用者自己來進行註冊Driver的動作,這個登錄的動作,即是要在/etc/odbcinst.ini中加上DBMaker相關Driver的資訊,我們首先打開這個檔案,並加上下面的幾行:6 g5 x: k, n# l- Q% p
" @0 O# G+ |+ c( |
[root@support RPMS]# more /etc/odbcinst.ini
$ u) [, o. `+ f4 @6 |# Example driver definitinions
B8 A# F) r; x. L3 F* x#+ K# j6 j* L4 s0 J% F
#
: u5 a J6 {6 u" H9 ~+ Z7 ]+ z$ K% p( W1 c* {
# Included in the unixODBC package
2 U# @% V, Y6 {2 [( |! P5 O[PostgreSQL]- M+ Q- W2 d' x; P( S
Description = ODBC for PostgreSQL
% ~1 Y2 ]& S$ P- J( RDriver = /usr/lib/libodbcpsql.so
* U$ _5 d; M" f2 @; pSetup = /usr/lib/libodbcpsqlS.so4 ]) j4 B- f1 j/ T2 G
FileUsage = 1# f" O. z$ ?& q" l9 G/ y c
....
# e3 X s* ~4 M+ \$ z" z7 c/ f7 L[DBMaker 4.2 Driver] <==這就是您向unixODBC註冊的Driver名稱,可自行定義, p' U( y3 j: A1 W3 X
Description = ODBC for DBMaker 4.2( M' G! A, i( @! i
Driver = /home/dbmaker/4.2/lib/so/libdmapic.so <==必須登記您環境中,DBMaker所使用的Driver完整路徑
, g( T: {+ [3 t" r4 B#Setup = /usr/lib/libodbcdbmakerS.so
7 N5 I4 _: U- T& Z* v( @FileUsage = 0
) n8 U8 K1 o2 O ^; b' N5 K
' C$ ]4 n4 c; _$ V& @ m. o# M
# z. u% ~# x" _ @ F) W3 q在設定Windows的Driver Manager時,在加上一個新的DSN時,資料庫廠商通常都提供一個安裝程式,讓使用者可以登記如Server位置、Port Number、須要使用什麼認證…等等。這個畫面就是上述的「Setup」,由於DBMaker目前在unixODBC中並未提供安裝畫面,故須暫時將它關閉;待之後的版本提供後,再把它開啟。: z7 Z# v+ H+ a# J3 A$ f/ I/ v
; E) N$ p- [1 g$ r. j" o設定ODBC DSN9 u; |+ ]6 A; E% T6 ~: D/ s& m/ ~
接下來便是設定Data Source Name了(DSN),在Windows時,有所謂的System DSN及User DSN,其實主要的差別便是System DSN是可為所有User所存取,而User DSN則只能為某特定user存取;當login成另一位user時,便看不到原來User登錄的DSN了!
8 g" d) f9 w5 s- y而在unixODBC中,則是使用不同位置的檔案,來存放System DSN及User DSN,在我們的環境中,System DSN會放在/etc/odbc.ini,而User DSN則會放在個別User的家目錄/.odbc.ini。8 @& ]! s: [1 z, |4 i# _7 O1 Q
由於我們要使用Web的PHP來連接DBMaker,所以要設定System DSN,以下是我們所放置的內容:! y- M% U0 G* x) H0 K# q. r$ v
. c6 ~1 o; w) r* d* A# Y6 {& c
[dbsample4]
3 a+ q" k9 ?% u4 @' o/ B9 qDescription = Database for dbsample4
' |8 Q" G: H: P+ ?Driver = DBMaker 4.2 Driver <==注意,此處須與之前Driver設定的名稱相同: H. \- h7 k* u" h0 y7 V7 ~
Database = dbsample4 <== 資料庫名稱: |1 G9 V5 y; c: B+ p7 y
Host = localhost <== server所在位置
& N7 E6 A& E7 T" H# \Port = 2450 <== 埠位置% _1 ] Q: L, S |7 {* M
User = SYSADM <==使用名稱(DBMaker預設所使用的管理者名稱) s7 j* M2 Z& Y( Y" J
Password = <==使用密碼 (DBMaker預設所使用的管理者密碼): k$ B! W( X' E8 _- g' x! W( H6 x6 q
當然您可以使用不同的帳號/密碼登入,但此處為方便,使用DBMaker所預設建立的管理者帳號SYSADM,及預設的密碼(空白)0 ^% ]# ]7 u3 z
9 B0 ?# X0 c: `2 `測試連接$ t; c9 ]8 r% z2 P
接下來,我們使用unixODBC所附的isql來連接dbsample4的資料庫,isql的標準語法為:
' G, U4 S4 h/ U7 ~, M, v
0 j& b. ~# ^/ Cisql DSN [UID [PWD]] [options]
. Y& W+ K" O( ^# a我們直接用下方命令來連接資料庫:/ |( o: U2 w5 ~9 p5 F* c
8 c9 M2 p d4 W$ J[root@support RPMS]# isql dbsample4 sysadm
2 c/ {9 V$ S( p. H& @% a: e9 M# z$ @' F% x- m* s
+---------------------------------------+
I( a/ J7 c' R! j9 g- {- I+ G0 S. g4 {! b
| Connected! |
' n9 y2 A! A$ W' s( c: T6 [, S; l/ `# w
| |3 H8 r7 o& J6 J+ [; _
: K: M. X# ]1 e q| sql-statement |4 v- U# A2 J8 j2 c
% a4 F, y, M- a* m4 N+ R/ k# \# t
| help [tablename] |! S( ]6 l9 v+ ~9 {! E
7 w- F1 a- |2 C% ?- s$ P
| quit |- w8 B9 n, E$ \
1 O* Z: v1 l! V0 H# w+ y| |
, O) ~1 K6 a5 D0 H3 l3 k5 D7 L) P. ^1 p7 `4 e; I8 q: G
+---------------------------------------+; G0 {) u. V: M
6 a( [& o* [8 ^& V4 s$ NSQL> select * from SYSTABLE;
d' k/ b% t+ O& L5 ^ B4 ^4 z* j" Z
.......
% ~! t; h" z6 H% \5 q# w. i- _2 P' J, Z
& P/ {7 R) b9 E4 j! q
這樣便可確認我們的確能從unixODBC中,正確連接到DBMaker sample4的資料庫!9 s0 a) M0 P9 x4 p& N5 U" s
9 B& r; k3 \+ M, ]/ E& u MPHP+unixODBC+DBMaker( S0 P1 I2 o! g2 Y
現在我們能用unixODBC來連接DBMaker了,剩下來的工作就簡單多了,首先我們先確認我們的php是能夠呼叫odbc function的,先用測試程式看看php是否包含了odbc呼叫:/ D0 H( a% _1 Z2 v7 u
=>存成phptest.php4 N5 m* }" {# C. Q' y9 U% ^7 n$ x
然後在Browser底下,查閱Configure Command,是否有--with-unixODBC=shared的文字!8 a8 C- Y9 P T) Y% [4 A* r
接著再查閱網頁中的ODBC該節,是否顯示ODBC Library為unixODBC!
p& M: n! ?% _3 \. K若是以上都無誤的話,您可以撰寫以下的程式php_odbc.php:
# i" I: n9 ~7 x% O% m7 j5 m" G- {* l* e+ D; B: _
很有可能(最少筆者就碰到),此時卻顯示了無法認識odbc function call;這個問題在筆者這邊碰到時,先查了一下php裝設了那些rpm,後來便發現少裝了php-odbc這個套件,不知道是不是Distribution的問題(筆者裝的是RedHat 9.0)。當正確安裝了 php-odbc-4.2.2-17.i386.rpm後,再執行上述程式,便沒有發現錯誤了!
1 |5 o# p4 J7 M8 D9 t, A: u有關php的設定及它與apache的設定,網站上另有一篇專文,請自行參閱。
8 R. T; @1 ]. g+ M至此已經大功告成,user可以自行撰寫幾個簡單的測試程式,測試看看是否可以正確使用DBMaker,開始撰寫自己的網頁囉~
; T* ]3 t3 F% O
& [/ Q7 N; k6 S( J/ W8 s/ m( U結語
4 {# `, l! W9 H9 V) o9 s! j0 Q使用至今,我們發現unixODBC至少提供了幾個好處:
- E" h. J0 O: }0 I$ ^1 y提供了Logical DSN對應到實體的Database Name c7 ~' h' j: N! P4 @3 W
可同時連接不同版本的DBMaker - O. Z; n1 g' E8 J/ K% \& F
4 X, M+ o. } b
提供了邏輯與實體資料庫的轉換3 o/ ~$ Z; `5 E1 s$ f
這也是為何Windows ODBC Driver Manager為何歷久不衰的原因;透過odbc.ini的設定,將邏輯的資料庫名稱,對應到實際的driver及database name。這樣的設定,也一併解決了下面要說的版本問題
; ]& | k* n" N6 N/ ~* i {0 ?% `4 e( k4 ^! G
連接不同版本的DBMaker& [& _5 s/ k# w% U! o
這是筆者最喜歡的一點!在早期build PHP時,必須要使用下面的方式來生成:
& R2 ~( w6 M/ {8 k j5 d( Y./configure --with-apxs=/usr/sbin/apxs --with-dbmaker=/home/dbmaker/4.2 --enable-track-vars+ N+ o( l+ \, i2 Z4 h' W
在這樣的設定中,其實已經把DBMaker的版本給設死在面,所build出來的libphp4.so,就是已經設死成只能連接DBMaker 4.2版本。1 T0 U) a- H& l8 d+ G
若是今天想寫一支php程式能同時連接3.7及4.2時,那要怎麼辦呢?這就慘了,因為在這樣的架構下,是沒有辦法作到的。
* b- O- x8 Z4 Q2 C e所以筆者有些機械的php就固定只能連3.7,有些機械就是放4.0;若要跨兩個版本的Database,就只能靠別的方法了。/ d% w V d }; N: F) D3 J B) l
但unixODBC提供了這一層轉換方式,讓libphp4.so不是設死只能連DBMaker 4.2,而是能動態存取外在的ini檔案後,再去連接DBMaker不同版本的so。這樣一來,筆者就能在同一支程式,靠著不同版本在odbc.ini中的設定,而能同時存取了!7 L6 @' q, ] V% _" @
1 {5 `; e+ N3 R$ q U更多的應用
) G" S. Q3 L7 p+ ?* d+ D目前unixODBC已逐漸廣為人所接受,不單PHP,包括Perl、Python甚至Java-ODBC Bridge都能使用。如此一來,所有的資料源都可以集中交由unixODBC來管理,這個發展過程,在Windows Driver Manager發展之時也都有過,而它顯而易見的好處,造成了Driver Manager及ODBC的風行!而也希望透過這篇文章,幫助使用者瞭解它,學習它,使用它,最後能真正地喜歡它!
|