打印

技術專區 - 如何在Linux上安裝 unixODBC + DBMaker

技術專區 - 如何在Linux上安裝 unixODBC + DBMaker

技術專區 - 如何在Linux上安裝 unixODBC + DBMaker% G: g4 K: u. p& J
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker # i/ L% R! h" A+ y7 \3 b  x! E0 y

目錄

  - L  Z2 ?0 L. Q; Y5 ]' k8 \
1 如何在Linux上安裝 unixODBC + DBMaker) D1 j- e* l+ o: P

" R, i( @4 Q7 f3 y3 X! ?: O6 k2 unixODBC介紹
5 H& g/ ?2 f! ?5 {# A0 N' t( @# T4 v& G  C
3 DBMaker簡介
3 W) n6 C) S2 f# v( i' i3.1 DBMaker在Linux上的安裝
0 J4 p0 G' {: R6 X. l3 M2 f3.2 下載DBMaker 4.20 j! w# D: T6 S4 M
3.3 安裝DBMaker
# x, r# G* K; G2 t1 ]$ f3.4 檢視安裝後的環境" i2 r$ i& n+ m

' ]6 B7 E% g' [& t& x9 W4 安裝unixODBC
, O: a4 b" H1 s, [4.1 設定unixODBC連接DBMaker 4.2$ f* Z$ w  [5 l% J% V0 ^& f
   4.1.1 設定Driver
0 Y+ e* ^% B: g, E& G7 C' o! a& U   4.1.2 設定ODBC DSN
$ u- I6 v0 e9 n, R   4.1.3 測試連接% F$ y' g! w. V8 [" B2 |
4.2 PHP+unixODBC+DBMaker
8 t+ P& z" m) b7 \
) l4 h0 f* m: T. v5 f7 a5 結語
( s4 e5 f1 S9 [( V" z5 E' V5.1 提供了邏輯與實體資料庫的轉換
  T" @4 u' l! z( U+ w5 e- ?5.2 連接不同版本的DBMaker3 o; P% N/ j3 B( i- Q- }
5.3 更多的應用

/ ^# n  J  s4 z6 g) N* f( z
( r$ |& Y+ Q3 w2 N) W  m
# g6 j1 s4 v2 Q- K' D# g' H; p: y: g如何在Linux上安裝 unixODBC + DBMaker3 f7 k3 s6 v3 @& r( R, p  y
在Windows中相當好用的ODBC Driver Manager,在Linux中卻一直沒有相同的設定;而現在Linux也有了類似的unixODBC了!在本文中,除了介紹unixODBC的設定外,也會介紹如何透過PHP去連接DBMaker資料庫,及使用unixODBC所帶來的好處。   L! x& E3 U# t, E8 J* T  w9 l

3 i5 a/ T+ N: y) V1 B* M* j$ i9 |( p9 j' v: _

( ?" E& [1 n8 s, p) C5 Y  @
: \) O; i$ h6 ]/ EunixODBC介紹. x1 L- D) I! X2 b9 j
ODBC(Open DataBase Connectivity)是一個跨平台的標準介面,從1990年代開始推行以來,一直廣為業界所使用,即使如今有ADO或JDBC等新的標準,在業界中卻仍時常見到這種界面。即是因為推廣的時間久及開放式的架構,讓用戶已經習慣且易於去使用它了。
6 A1 y( n( S# _! ]4 ?  u2 b' w* W6 {# R. t" K' z
在Windows中,透過ODBC Driver Manager,各家資料庫可個自保留自己的Native Driver,然後使用一層轉接接口,將相對應的ODBC Call轉化成自己的Native API Call;但在User的角度而言,這兩者在外觀上是完全相同的,而各家資料庫則需負責將標準的ODBC Call,轉換成自己獨特的Native Call。
4 d" Q1 {+ v# h- ^. i( X& A
5 M6 q' b+ u& F  s3 v& [4 ]! l這樣的使用方式,讓ODBC在推出不久,即廣為用戶所接受,User也都習慣在ODBC Driver Manager中註冊自己的Driver,及設定相關的DSN(Data Source Name)。 $ D5 h4 A/ @6 {  C/ E
$ L9 T; h0 t5 u- {# C) t' [" f  \
這樣方便的設計,在Linux中,卻一直欠缺相同的機制;使得當要使用各式語言去連接資料庫時,便得依該語言的特性去重build一版可呼叫Native Call的模組(module),而一旦Build完後,若當中需要一些變動(如版本昇級),常常就要重build一次,這樣的設計使得Linux在使用資料庫時,極為不便!!
: q% t  g2 ]$ F  k
; P' B' L2 S( P2 O6 h5 v" e1 `有鑑於此,便有一unixODBC的組織嚐試在Linux底下,建立類似ODBC Driver Manager的機制。此一機制與ODBC Driver Manager的功能相仿,便是要能提供Runtime的動態變換功能,讓AP可以透過ODBC Driver Manager,動態地載入不同的資料庫Driver,透過這樣的方式去連接資料庫。 $ G1 {* H; R$ R' _; Q  k3 W6 F+ _

( _( `0 W2 O5 B如今,許多Distribution廠商都已經將unixODBC列為標準安裝的套件,而愈來愈廣為人知,本文即是要安裝unixODBC,並利用PHP去連接DBMaker 4.2資料庫,並由此來看看使用unixODBC所帶來的方便性。有關unixODBC的其他說明,請參閱官方網站。 # R3 }+ w, W( l

# a+ U0 Q5 c. m# wDBMaker簡介
. M6 R( A1 s# W5 m1 |DBMaker為一跨平台的大型關聯式資料庫,符合SQL 99標準,擁有開放式架構,在處理多媒體、全文檢索上擁有強大的搜尋性能;有關DBMaker Engine部份的介紹,請參閱DBMaker的其他相關文章,本文不再贅述,而只著重在使用unixODBC方式的介紹。
% H, _- o  ~4 [, B) n# j
+ Q5 m( q, i, g8 g首先DBMaker是一跨平台的大型資料庫,故在Windows、Linux上的安裝與使用幾乎是一致的。若您尚未使用過DBMaker,我們簡單介紹如何在Linux上安裝DBMaker,與其他資料庫相較,您會發現在Linux安裝DBMaker是一件相當輕鬆愉快的工作。
+ i/ {0 p: f9 P, o5 z3 g5 Z) b: H" C8 A  h2 {7 y6 Q
DBMaker在Linux上的安裝
' b% e) r4 O* ^! E6 T: F加入dbmaker的user 首先您須在Linux底下,加入dbmaker這個user,不要忘記請一併將密碼設定好:
. F  W5 O3 K7 k8 B1 [! }4 X6 c/ v5 g  m  T" b/ i/ t

8 a  C5 X/ I" L% l[root@support root]# adduser dbmaker
8 D( @# O1 |  q  F" w" t[root@support root]# passwd dbmaker
% M  Z/ U) R) x$ i0 oChanging password for user dbmaker.0 T6 }8 p& G  S8 z
New password:
& l$ O) q5 j" B  Y; GRetype new password:
7 w* G6 O1 S0 P" ^2 e2 J- ?# Tpasswd: all authentication tokens updated successfully.. V" }  B5 Y5 ~

( X2 E% V. h- O8 q4 O1 D一般說來,除非另行指定,否則dbmaker的家目錄會放在/home/dbmaker底下。 , O8 p' N+ Z/ A9 A8 M. q

9 ]: O( O3 L/ ]+ k下載DBMaker 4.2% y% G/ H( T3 V9 @
接下來,請至DBMaker的官方網站下載區,去下載最新的DBMaker 4.2版本,將其放在適當的地方。(本文將其放置在/tmp底下)
8 A" A6 b: |, t' x, A1 {# _# S6 N" w% @  L9 O- x
[root@support tmp]# pwd
" Q: q7 E& ?. G& [. z/tmp6 b2 T8 F: [: f6 [. e
[root@support tmp]# ls -al dbm*
) e/ h. r7 N6 P( \1 b9 @-rwxr--r-- 1 alen alen 34649895 11§ 23 14:48 dbmaker-4.2.0-Linux2.x86.tar.gz
- q9 e) r9 T6 f, W& q1 m* }+ h' M/ m[root@support tmp]# tar zxvof dbmaker-4.2.0-Linux2.x86.tar.gz <==解壓縮1 g* s( R0 u6 S- k  w- t. @! R8 L
dm420.tar. ?& B8 l! N" M; L7 F6 B: x  J
setup
9 H9 O  U* P' b2 ?/ ^6 ~7 H! {% H. v' I4 v4 a
安裝DBMaker
. h) Z+ u* Y( l! j/ \0 I7 e接下來,請切換至dbmaker這個user,並執行setup程式,為了能正確執行setup,請將setup程式改變模式成「可執行」。
/ V7 k7 O' p1 x9 D( p! r6 @: Z: p; a
% s- _. [2 t4 \% z/ ^+ Y3 E: d
[root@support tmp]# chmod a+x setup <==切換成可執行/ n8 r/ n' I, Q6 L
[root@support tmp]# su dbmaker <==切換成dbmaker後,進行安裝
0 R) u5 x5 n2 b0 q% ]& P# d[dbmaker@support tmp]$ ./setup: t2 p: F3 [3 U  ~9 o

& ^5 Q( E9 B0 l" f
* z5 d! I) w. u; b  S7 M+ b==============================================================8 J2 Z" T4 V( A2 W
DBMaker Database Management System Installation
9 q& T' G9 a7 C; D% d$ n/ dFor DBMaker Release 4.2.0
; F# ^1 @3 b  L1 I7 H- }Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
- A! `6 m5 G+ J+ K+ D2 p3 p==============================================================
7 Y! v8 Z2 g2 z& j4 tInstall Components:: c# z) F' }6 y" X) W9 ]
[A] DBMaker Server .............. (yes) Language: [ Western, Big5 ]5 z. i( {" ~& U4 m) X
[B] DBMaker Client ............... (yes)" J$ n8 Z( A* \; K; {! t
[C] Sample Programs............... (yes)
- I; o( [; ~1 N/ F% p6 X3 v[D] Tutorial Database.............. (no)
. c+ t$ l# I. B, f! h3 I[E] Documentation ................. (no)
4 M* X% N* v) g! \2 q% zInstall Path:- e# x0 T7 f7 j) p( s$ B$ l3 u1 {
DBMaker Home directory: /home/dbmaker
0 F( `+ Z( R' h$ }[Y] Start Install [N] Quit7 i7 s# p. H2 K0 r1 ~
Please press [ A B C D E Y N ] Y <==為簡單計,請直接使用「Y」進行安裝
- T% l* ?1 B7 b6 S& u. J+ M( w- O1 E
( L( l) G  ]- b3 n9 ~當您按下Start Install後,DBMaker就開始安裝,約1-3分鐘內,安裝便可完成,可說是又快速、又方便呢!
9 p( D9 T/ X* D6 e5 z, g+ l/ Z6 j; {, s7 Y+ ]+ R
檢視安裝後的環境
1 |2 i, s' D( W+ i- A9 ?5 R1 k" T在上述安裝完DBMaker後,DBMaker會自動產生一個範例資料庫-DBSample4,我們可以用下面的方法來啟動這個資料庫:0 D' }8 a  t& V% G% z& V1 Z

; k4 E3 `2 U0 `8 Q( D--------------------------------------------------------------------------------9 L/ x  W# D5 A3 j
[dbmaker@support bin]$ cd /home/dbmaker/4.2/bin <=切換至命令目錄,注意此時使用的user為dbmaker!  T- V! n0 F# n" _9 A# \! b
[dbmaker@support bin]$ ./dmserver dbsample4 <= 使用此命令來啟動資料庫) f3 C1 }* {! p9 x( i6 w2 v
DBMaker 4.2.0 (#4721, 20040924)
" Z0 N5 H. d% Y# f5 D# \5 FCopyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
9 k# _8 v, b% C& L  PSQL Server bound to port 2450 <==已在埠位2450上準備接收request
' h1 j0 u# ^0 L* Q; pDatabase Server is running in the background mode.
6 ~% X7 }+ ^+ @+ f4 a$ e* pProcess ID = 15668
' l7 h4 G) R; d: \+ S1 p8 L% X# S# A# O: m; d9 s$ R
這樣資料庫就啟動了,您可以參考DBMaker的其他手冊,使用其他工具來操作這個資料庫;(有關資料庫服務的埠位、名稱等設定,都記錄在/home/dbmaker/data/dmconfig.ini文檔中,有關此文檔中的相關設定,也請參考DBMaker線上手冊)。3 Y( S9 k: ?$ f0 S
在安裝完DBMaker後,應該就可以在/home/dbmaker/4.2/lib/so中,找到DBMaker的odbc native driver。, @% Q% T6 O( @( O% G

! a2 a  q" I. K0 v" W[dbmaker@support bin]$ ls /home/dbmaker/4.2/lib/so/) o8 m. H# }0 N* k& M3 ]! O
libdmapic.so libdmjdbc42.so libdmxtt.so libiconv.so.2.2.0
5 f$ g8 u" @4 f5 ~! f& ~libdmapis.so libdmjsvrut.so libexpat.so libxerces-c.so1 z9 ^( _& I0 P! \) O1 e/ P
libdmdttut.so libdmudf.so libiconv.so libxerces-c.so.21, o! T% T5 h+ X- q  d' x4 V
libdmjdbaut.so libdmxtm.so libiconv.so.2 libxerces-c.so.21.0* C( Z' I" @  @3 X) o

8 x/ Z6 Z/ E* k* f1 U其中的dmapic.so,便是DBMaker的native driver;由於DBMaker在開發之初,便是使用ODBC的開發介面,所以DBMaker的Native Driver,便是一符合ODBC API標準的Native Driver;而不像有些資料庫廠商,事實上還是需要另一層薄薄的轉換接口,才能將ODBC API轉成實際的Native Driver API。9 _+ e  U: I2 n% x7 n  v3 x/ r" w
- x+ N8 Z+ z: o5 j+ ?* i8 f6 F; |
安裝unixODBC
/ ?$ U' D( O9 n9 s/ h; f接下來談到本文的主角-unixODBC,由於多數人已習慣RedHat的rpm安裝方式,故本文會使用rpm來安裝,至於若要自行build者,請參閱unixODBC的官方網站。
' |. W' Z' |6 c: ]1 o首先至官方網站中取得最新的unixODBC package,本文使用的是2.2.3-6的版本。
. m6 e. Y4 a7 m/ l( Z4 {接著,我們使用rpm將unixODBC安裝上去:. z. @2 H! z. j3 }* b; r4 u

1 J' _: V" h$ g% E% B3 e: C, A[root@support tmp]# rpm -ihv unixODBC-2.2.3-6.i386.rpm
, M/ A9 ]# ]2 ^* ?+ E4 c8 Wwarning: unixODBC-2.2.3-6.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e$ Q3 h( V: @, K9 t
Preparing... ########################################### [100%]$ l! [. p2 j% K6 A8 i
[root@support RPMS]# rpm -ql unixODBC|more<==檢查一下到底安裝了那些檔案!
2 r! v- M* y' L: [$ B7 o8 P. y/etc/odbc.ini <==這是安裝DSN的檔案,本文的重點3 U: s, j! }. u5 c0 m6 j
/etc/odbcinst.ini <==這是Driver Manager所放置的Driver設定區,亦為本文重點
8 x" t, @" s/ `' ~0 t0 M' v/usr/bin/dltest: H0 Y/ ], C% X2 G* h7 e9 l
/usr/bin/isql
5 t4 ^4 C& V$ v3 g; S, t9 ]6 D/usr/bin/iusql# c+ `( v/ X  Q- L6 W8 x$ U
/usr/bin/odbcinst
& A# z9 z$ x6 H6 k' P- v/usr/bin/odbctest1 Q4 p* u, m1 e5 o1 o
/usr/lib/libboundparam.so.1" B! W. t% Z5 ~3 k, p, Q' ]% v
/usr/lib/libboundparam.so.1.0.0# T" L& s/ [9 N( N2 h8 a
/usr/lib/libesoobS.so.1! h( F  W( t: G5 B) m' M, f
/usr/lib/libesoobS.so.1.0.0
% Q7 l2 d, L/ [& V7 b9 E; @; h* P/usr/lib/libgtrtst.so.1
" ?7 {! Y/ d/ r7 n/usr/lib/libgtrtst.so.1.0.08 O) C' j) \: t3 C
/usr/lib/libnn.so.1
' f  @1 ^& H1 x6 B) i* K/usr/lib/libnn.so.1.0.0
1 y1 e  R  m. ?# k1 ^* T5 a8 Y/usr/lib/libodbc.so
) |! r& d/ z1 Z5 I) X( p/usr/lib/libodbc.so.1( p  E7 B/ m/ X6 h  P
/usr/lib/libodbc.so.1.0.0
  W% }$ b9 ]+ V: l% {............
, `2 T% |$ X" I5 o, p6 l6 D8 a) D7 m; ?* [8 D* _

0 @2 c8 ]: e0 w( Z3 c+ J: x6 N
% q, S% j* ~/ o/ n設定unixODBC連接DBMaker 4.2
6 ~  {3 y, b$ p, Q% N$ x( n% U如上所述,我們接下來就是要將unixODBC與DBMaker的Driver串接在一起,如同在Windows上,去設定Driver Manager一樣。1 A+ t( D" m( O$ \) T6 F
1 W8 U" Q6 C& ~5 k& T
設定Driver
0 B  x( c+ J; D' k) ?2 r在Windows的Driver Manager中,我們所使用的Driver,事實上也是需先向Driver Manager登記的,這個動作由於多數是由資料庫廠商的安裝程式作掉,所以User可能完全不知覺。
- d( ~' A1 l9 k1 O但在unixODBC中,則必須由使用者自己來進行註冊Driver的動作,這個登錄的動作,即是要在/etc/odbcinst.ini中加上DBMaker相關Driver的資訊,我們首先打開這個檔案,並加上下面的幾行:
. B' M1 ^- i; ?& \# u4 K! Z8 [+ B- B/ [0 Y% |  h2 a9 E
[root@support RPMS]# more /etc/odbcinst.ini
' L- e4 }6 ?+ s9 T) z' `! \# Example driver definitinions
  h! C) d/ K% d#
  H1 V9 L# u$ \  \, H3 x#, f: |8 t- o' R/ m) P  t

4 x6 ~) p) e. Y4 \2 j* o# Included in the unixODBC package
; q+ O+ f: i1 N9 v[PostgreSQL]
3 [% U( I# T  F" \, }) FDescription = ODBC for PostgreSQL
/ Y  ^8 l9 Y4 a+ D# O" P  ^Driver = /usr/lib/libodbcpsql.so! U, T$ F" S5 Q: L7 t
Setup = /usr/lib/libodbcpsqlS.so
$ O4 r% O% \# s, _1 cFileUsage = 1
; E( t. _  O9 q& F....
: H+ w" W0 \7 x# Q[DBMaker 4.2 Driver] <==這就是您向unixODBC註冊的Driver名稱,可自行定義
5 I- `& u1 O( r  gDescription = ODBC for DBMaker 4.2
9 U7 c' v' t% VDriver = /home/dbmaker/4.2/lib/so/libdmapic.so <==必須登記您環境中,DBMaker所使用的Driver完整路徑5 B: v, _. p' w3 W5 p5 f
#Setup = /usr/lib/libodbcdbmakerS.so
% l9 l$ N  c& p- QFileUsage = 0' P2 z& h5 n$ i' |1 i8 z
3 A. l+ q5 C/ N: w" m- _: J; y
" _; w/ h. T2 k9 ?
在設定Windows的Driver Manager時,在加上一個新的DSN時,資料庫廠商通常都提供一個安裝程式,讓使用者可以登記如Server位置、Port Number、須要使用什麼認證…等等。這個畫面就是上述的「Setup」,由於DBMaker目前在unixODBC中並未提供安裝畫面,故須暫時將它關閉;待之後的版本提供後,再把它開啟。
& h2 ~7 Q- p' M- h) C+ J
- p% C+ O. A' f( J) e8 [+ I設定ODBC DSN
& v, _1 Q2 I) q1 [# l' W接下來便是設定Data Source Name了(DSN),在Windows時,有所謂的System DSN及User DSN,其實主要的差別便是System DSN是可為所有User所存取,而User DSN則只能為某特定user存取;當login成另一位user時,便看不到原來User登錄的DSN了!" b3 Y2 C. ?* ]$ G' S
而在unixODBC中,則是使用不同位置的檔案,來存放System DSN及User DSN,在我們的環境中,System DSN會放在/etc/odbc.ini,而User DSN則會放在個別User的家目錄/.odbc.ini。8 V$ k! Z  e4 M4 L2 k
由於我們要使用Web的PHP來連接DBMaker,所以要設定System DSN,以下是我們所放置的內容:
8 t, a5 P, h* H+ K1 M( g7 [5 ~4 L9 ?2 `" s
[dbsample4]# a/ ?  c3 c/ |1 `
Description = Database for dbsample4% B- f, I; Z) }0 h; M  k8 y4 W* y
Driver = DBMaker 4.2 Driver <==注意,此處須與之前Driver設定的名稱相同
& P; A$ E# Q) r+ U% ?  T% jDatabase = dbsample4 <== 資料庫名稱9 F# X) g1 v$ |/ X
Host = localhost <== server所在位置/ E* A1 Q7 [' q& K* |  x! I( N$ |
Port = 2450 <== 埠位置
# R5 t' g0 P) ^* l: ^User = SYSADM <==使用名稱(DBMaker預設所使用的管理者名稱)
3 d% Q: ^% j( @9 N2 y1 R% M: |" yPassword = <==使用密碼 (DBMaker預設所使用的管理者密碼)
( M' s1 _+ I8 f) {! O當然您可以使用不同的帳號/密碼登入,但此處為方便,使用DBMaker所預設建立的管理者帳號SYSADM,及預設的密碼(空白)
9 s3 `, v* v% G$ k1 U
$ Z  i' D( ?7 j* x' [: S測試連接7 N% i5 m  M6 Q( c
接下來,我們使用unixODBC所附的isql來連接dbsample4的資料庫,isql的標準語法為:
  \, F- W; v' n# a: n8 R1 J$ N$ Z  g# l% Y& E6 O
isql DSN [UID [PWD]] [options]
  z5 J- F$ M5 g4 R' F我們直接用下方命令來連接資料庫:' B. o: ]: i7 F4 U/ J

- q. X( g4 n$ l5 \0 ^- x[root@support RPMS]# isql dbsample4 sysadm
+ I4 d  S7 d8 d3 U
  _7 L( d7 ]/ K+---------------------------------------+
3 W# }5 \1 k: m3 I' a' B5 f  ]( G- Q
| Connected! |1 F9 `( Y1 ]. z& k$ v
- Z% r5 _. }) M6 }: B
| |
# i4 r  F  d$ ?) V8 J1 N: {2 |# x' F* O2 e) b* q( d  z5 v
| sql-statement |8 }' N$ v' O+ V6 s9 y3 a: p7 e

3 t7 n5 @4 {/ ?  K- A5 a| help [tablename] |
( y" P0 a' S) q
% d0 w/ Y& j; G0 V- Q% }| quit |
7 ~- X# B/ I8 V) h1 x/ ^( d& l4 v0 x7 G. _! N& k
| |
* j5 w6 j+ [9 v; G
+ C5 ?4 L  S. j& G+---------------------------------------+" ~% F. M* F9 Z( F/ I; r% X
+ X/ z: e) t# \; M+ n
SQL> select * from SYSTABLE;
' R7 N' e$ V1 m7 C9 V: h  z' J% w8 R* m- g0 v+ R6 I4 V5 }' P0 j
.......- I8 g# M. o7 F9 C' N
6 E; x- u& y. D2 B' y& L

- c* J  c! _: E0 i& U這樣便可確認我們的確能從unixODBC中,正確連接到DBMaker sample4的資料庫!6 F+ W7 f) U+ ~& k8 v( n  L

8 U, A+ [. o' HPHP+unixODBC+DBMaker) Y! B% C0 k$ }% L, u
現在我們能用unixODBC來連接DBMaker了,剩下來的工作就簡單多了,首先我們先確認我們的php是能夠呼叫odbc function的,先用測試程式看看php是否包含了odbc呼叫:
9 D8 ?+ M+ _/ Y' U% e=>存成phptest.php
8 ~' C2 m. N, }6 N9 h! X: T6 b* C; F然後在Browser底下,查閱Configure Command,是否有--with-unixODBC=shared的文字!
9 z9 \3 P6 y) c) D: d接著再查閱網頁中的ODBC該節,是否顯示ODBC Library為unixODBC!* ~' F/ S; j5 ]1 v. J( i
若是以上都無誤的話,您可以撰寫以下的程式php_odbc.php:
6 q9 d+ x) o$ N5 j) G! u% i
/ {' y' x6 E/ L1 Q& ?, H! j$ p很有可能(最少筆者就碰到),此時卻顯示了無法認識odbc function call;這個問題在筆者這邊碰到時,先查了一下php裝設了那些rpm,後來便發現少裝了php-odbc這個套件,不知道是不是Distribution的問題(筆者裝的是RedHat 9.0)。當正確安裝了 php-odbc-4.2.2-17.i386.rpm後,再執行上述程式,便沒有發現錯誤了!
' P# w$ q' B+ S; q" R: s4 z有關php的設定及它與apache的設定,網站上另有一篇專文,請自行參閱。
3 F. Y( p1 D* H3 C* w3 `6 ?* ^至此已經大功告成,user可以自行撰寫幾個簡單的測試程式,測試看看是否可以正確使用DBMaker,開始撰寫自己的網頁囉~
# d- K/ D4 u8 s  M0 B5 Q: T" [; n0 c: l4 @! W
結語6 F& @1 J/ Z8 D, s5 U/ N* F# {
使用至今,我們發現unixODBC至少提供了幾個好處:
" b$ O$ X( \! h% ]提供了Logical DSN對應到實體的Database Name ' y) B1 e/ _% a
可同時連接不同版本的DBMaker
8 R" d/ @+ m/ _: O; B$ G% w7 O; }1 m. q9 S( \
提供了邏輯與實體資料庫的轉換
( u/ ?9 C& Q; N6 ]7 |這也是為何Windows ODBC Driver Manager為何歷久不衰的原因;透過odbc.ini的設定,將邏輯的資料庫名稱,對應到實際的driver及database name。這樣的設定,也一併解決了下面要說的版本問題( w) V/ q9 q# I5 T2 m
, ?4 v' A3 v+ V$ w1 N4 H' `/ J& Z8 H' b. T
連接不同版本的DBMaker: x; }) @7 n; P
這是筆者最喜歡的一點!在早期build PHP時,必須要使用下面的方式來生成:
7 c3 K  m5 `; T* J, m  e% X./configure --with-apxs=/usr/sbin/apxs --with-dbmaker=/home/dbmaker/4.2 --enable-track-vars
2 F; S% V* F' h$ k- m, X/ e在這樣的設定中,其實已經把DBMaker的版本給設死在面,所build出來的libphp4.so,就是已經設死成只能連接DBMaker 4.2版本。8 ^1 n+ [4 S" w, u* E4 y
若是今天想寫一支php程式能同時連接3.7及4.2時,那要怎麼辦呢?這就慘了,因為在這樣的架構下,是沒有辦法作到的。4 q; H) d) _- z5 n$ x6 Y, ]
所以筆者有些機械的php就固定只能連3.7,有些機械就是放4.0;若要跨兩個版本的Database,就只能靠別的方法了。, C( @1 V( {( I/ P
但unixODBC提供了這一層轉換方式,讓libphp4.so不是設死只能連DBMaker 4.2,而是能動態存取外在的ini檔案後,再去連接DBMaker不同版本的so。這樣一來,筆者就能在同一支程式,靠著不同版本在odbc.ini中的設定,而能同時存取了!/ [7 y  v* F7 B( Z  |, W+ j! \

8 i' \/ S6 W+ R. e3 f更多的應用
  c* c* \! ^" w( }( V4 ]目前unixODBC已逐漸廣為人所接受,不單PHP,包括Perl、Python甚至Java-ODBC Bridge都能使用。如此一來,所有的資料源都可以集中交由unixODBC來管理,這個發展過程,在Windows Driver Manager發展之時也都有過,而它顯而易見的好處,造成了Driver Manager及ODBC的風行!而也希望透過這篇文章,幫助使用者瞭解它,學習它,使用它,最後能真正地喜歡它!

TOP

發新話題