|
管理員
  
|
1#
大 中
小 發表於 2009-6-10 01:48 PM 只看該作者
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
( t0 ~/ _% a& g8 n5 K技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
4 q( v6 v# l0 \2 j目錄 & `4 T4 ~% r/ o6 b
1 如何在Linux上安裝 unixODBC + DBMaker
9 Y6 a: }4 N+ w5 z% r1 p
; i8 f0 A' l: n4 }- L9 m% p2 unixODBC介紹
: t- I2 r# e! O( N( y8 G4 r4 ?9 \* z' ?* [7 U& Z& |% f
3 DBMaker簡介) w p- e5 C1 j0 t
3.1 DBMaker在Linux上的安裝
7 i; _7 B# e5 \/ s+ a w5 ^3.2 下載DBMaker 4.2! E5 e4 J+ J0 v
3.3 安裝DBMaker
# Z- ~8 o* S0 q; y3.4 檢視安裝後的環境
+ N2 z" E& R! _3 @ Q1 L$ o* N' A
' V' N' ]% w! _& x) n# \5 A6 P; N4 安裝unixODBC
% P' M% U3 Q" t" @* d9 J5 u# c- @4.1 設定unixODBC連接DBMaker 4.2( M+ V* D) C6 V1 J
4.1.1 設定Driver \2 [3 X( N, v# W. U: S
4.1.2 設定ODBC DSN9 S* p& N I7 }6 e
4.1.3 測試連接
# S; C6 U1 A s3 z# j4.2 PHP+unixODBC+DBMaker4 S$ j5 P0 A, u! x+ t& Y
* v, e9 k2 i n* ]1 L) Y9 _
5 結語/ i5 _0 m1 I; o
5.1 提供了邏輯與實體資料庫的轉換1 ]7 X. i) Q9 v2 V, `/ z
5.2 連接不同版本的DBMaker
0 ~. {$ Q% M: A5.3 更多的應用
/ ?# @/ N; G, u& @
) {+ L2 S" b h. s5 S/ Z6 B1 r6 H& ?: x0 V
如何在Linux上安裝 unixODBC + DBMaker
# r8 v/ k/ e" O; U" J$ ]; S在Windows中相當好用的ODBC Driver Manager,在Linux中卻一直沒有相同的設定;而現在Linux也有了類似的unixODBC了!在本文中,除了介紹unixODBC的設定外,也會介紹如何透過PHP去連接DBMaker資料庫,及使用unixODBC所帶來的好處。 4 h- }: U2 n5 `! X2 v& X
6 D; i& U! i! V z& D
( j5 }9 H% ?1 v2 d7 @, V
3 [& y8 e$ `) R# B3 P/ I( A
: ^; z7 i1 s" ^+ eunixODBC介紹
( g+ ?3 ~0 H* y" A2 qODBC(Open DataBase Connectivity)是一個跨平台的標準介面,從1990年代開始推行以來,一直廣為業界所使用,即使如今有ADO或JDBC等新的標準,在業界中卻仍時常見到這種界面。即是因為推廣的時間久及開放式的架構,讓用戶已經習慣且易於去使用它了。 & Y! W3 W+ ~- K+ l5 O+ ^, X7 m
1 b8 W2 L1 u4 Q' C# H
在Windows中,透過ODBC Driver Manager,各家資料庫可個自保留自己的Native Driver,然後使用一層轉接接口,將相對應的ODBC Call轉化成自己的Native API Call;但在User的角度而言,這兩者在外觀上是完全相同的,而各家資料庫則需負責將標準的ODBC Call,轉換成自己獨特的Native Call。
# T' y& ^$ T# @3 E9 Y. [2 V* a4 q; ?2 Y4 K& Z2 A1 O
這樣的使用方式,讓ODBC在推出不久,即廣為用戶所接受,User也都習慣在ODBC Driver Manager中註冊自己的Driver,及設定相關的DSN(Data Source Name)。 4 j$ n! j8 J2 H) y0 u( a3 m& X
( f% I# ^, H1 C, I1 n7 i5 D( ]( ^
這樣方便的設計,在Linux中,卻一直欠缺相同的機制;使得當要使用各式語言去連接資料庫時,便得依該語言的特性去重build一版可呼叫Native Call的模組(module),而一旦Build完後,若當中需要一些變動(如版本昇級),常常就要重build一次,這樣的設計使得Linux在使用資料庫時,極為不便!!
) a6 f( {* {4 b2 J4 `5 V0 R
$ X9 L, A% ^3 Y2 S* Y有鑑於此,便有一unixODBC的組織嚐試在Linux底下,建立類似ODBC Driver Manager的機制。此一機制與ODBC Driver Manager的功能相仿,便是要能提供Runtime的動態變換功能,讓AP可以透過ODBC Driver Manager,動態地載入不同的資料庫Driver,透過這樣的方式去連接資料庫。 2 J: [0 _' u0 k& W9 J
8 K3 P" ]$ y9 }, ^6 J Q
如今,許多Distribution廠商都已經將unixODBC列為標準安裝的套件,而愈來愈廣為人知,本文即是要安裝unixODBC,並利用PHP去連接DBMaker 4.2資料庫,並由此來看看使用unixODBC所帶來的方便性。有關unixODBC的其他說明,請參閱官方網站。
) Y" E u6 `% E. \: B" T8 N! \% b2 \/ f* Y+ I9 O# A2 n
DBMaker簡介 Z) I, Z4 v8 P
DBMaker為一跨平台的大型關聯式資料庫,符合SQL 99標準,擁有開放式架構,在處理多媒體、全文檢索上擁有強大的搜尋性能;有關DBMaker Engine部份的介紹,請參閱DBMaker的其他相關文章,本文不再贅述,而只著重在使用unixODBC方式的介紹。
7 d2 ]& r! R* Z% q
4 K8 c0 a; j6 r首先DBMaker是一跨平台的大型資料庫,故在Windows、Linux上的安裝與使用幾乎是一致的。若您尚未使用過DBMaker,我們簡單介紹如何在Linux上安裝DBMaker,與其他資料庫相較,您會發現在Linux安裝DBMaker是一件相當輕鬆愉快的工作。
/ }6 p, K, w# z% V o2 I6 M% w% A
DBMaker在Linux上的安裝, h I6 \/ s4 q: @4 i
加入dbmaker的user 首先您須在Linux底下,加入dbmaker這個user,不要忘記請一併將密碼設定好:
+ z! ~; i2 N: d' m7 B4 _8 ~1 u% `' D% r1 a$ m: J( E5 Y
0 y; h2 {% u) G! \[root@support root]# adduser dbmaker8 [8 F3 B/ A+ A
[root@support root]# passwd dbmaker z t$ y$ b8 w2 E6 Q8 S- `8 d* M) H: o
Changing password for user dbmaker." _% \: ]4 t6 y$ Z* c
New password:
3 ~7 |# C! A: N3 P9 KRetype new password:
7 ^- s6 B5 n, m3 s& o7 V4 X/ mpasswd: all authentication tokens updated successfully.
$ C6 \( G3 E' [# A3 P' h5 o4 R/ z) L- {2 b* @, c' N% i4 l' B% y
一般說來,除非另行指定,否則dbmaker的家目錄會放在/home/dbmaker底下。 8 M7 l6 v6 b* Q$ F- c
, o$ L4 v i% s. K; M2 v2 `
下載DBMaker 4.2
, N* \' b. V! u% p7 ]接下來,請至DBMaker的官方網站下載區,去下載最新的DBMaker 4.2版本,將其放在適當的地方。(本文將其放置在/tmp底下)
& D/ F* v$ g( a1 m/ H+ Y. T9 [, ]" L. o* K
[root@support tmp]# pwd
4 s9 v% e) C- \0 |8 F8 U/tmp8 h% U8 s5 q7 |) c) M; U
[root@support tmp]# ls -al dbm*
0 x. R3 c: G, X* Y: M5 m' P+ C, v x-rwxr--r-- 1 alen alen 34649895 11§ 23 14:48 dbmaker-4.2.0-Linux2.x86.tar.gz
; q" W7 F" R. G7 R- v[root@support tmp]# tar zxvof dbmaker-4.2.0-Linux2.x86.tar.gz <==解壓縮
% q8 c0 x" s3 c) }dm420.tar
2 `- ?5 f j4 L; l3 D isetup
: Z6 w/ K3 Z7 s v! }9 N2 d9 y
. F6 K# D) D& K+ ?% N4 C安裝DBMaker% c& ?9 R/ F) a$ b
接下來,請切換至dbmaker這個user,並執行setup程式,為了能正確執行setup,請將setup程式改變模式成「可執行」。
' ~8 X* S- a; T: G0 ]7 c2 C# q, N4 @
! M/ Q- ]* L6 {2 I2 V% Y& t8 e
[root@support tmp]# chmod a+x setup <==切換成可執行
( a# H6 V) U% E4 f& f& k[root@support tmp]# su dbmaker <==切換成dbmaker後,進行安裝4 F2 p9 |2 |! T* ]& K2 H
[dbmaker@support tmp]$ ./setup3 \, y& L7 w6 K
1 b! t9 Z/ f! M6 n) C: x
. `% P' N4 Z6 ?' v/ l- i==============================================================
u5 o3 u! V$ T M3 a) M7 CDBMaker Database Management System Installation; h. H0 H2 G) \) z
For DBMaker Release 4.2.0
1 Q! ^- e0 `& N+ X5 GCopyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
/ s. a9 [3 M3 A==============================================================6 i' c- v' l+ w+ v
Install Components:
; K- J8 U A' J4 ^( v( F3 k" _+ C[A] DBMaker Server .............. (yes) Language: [ Western, Big5 ]
s! {. [1 ]+ e: L g% X[B] DBMaker Client ............... (yes)& E' }3 D- o$ m+ w0 J# N7 C
[C] Sample Programs............... (yes)1 T0 N( {7 O ^' x& X
[D] Tutorial Database.............. (no)
{' i5 W+ C: G- ~[E] Documentation ................. (no)& U: q* I$ b) |# |0 C, I2 v9 x
Install Path:
# I# H8 j, L" rDBMaker Home directory: /home/dbmaker/ N% N- ?, n9 G
[Y] Start Install [N] Quit) T; c! y& w0 B! |& B/ G( S) W
Please press [ A B C D E Y N ] Y <==為簡單計,請直接使用「Y」進行安裝7 `5 ~/ w% u9 @7 D# n
# n6 y/ t9 \7 w; u% Q2 g
當您按下Start Install後,DBMaker就開始安裝,約1-3分鐘內,安裝便可完成,可說是又快速、又方便呢!
! Y* H* Z8 G; d# j- e4 E# [/ l# N$ b* o. j
檢視安裝後的環境; T7 K4 Q% n6 H1 Z
在上述安裝完DBMaker後,DBMaker會自動產生一個範例資料庫-DBSample4,我們可以用下面的方法來啟動這個資料庫:$ D, s2 p6 F( _) [" ~& Q4 f, M9 ~
( E" \$ X0 C+ ?# F--------------------------------------------------------------------------------) k5 C$ R) \" g" _1 q! a
[dbmaker@support bin]$ cd /home/dbmaker/4.2/bin <=切換至命令目錄,注意此時使用的user為dbmaker!
: J ^! T5 `* n3 j1 Z# C* o[dbmaker@support bin]$ ./dmserver dbsample4 <= 使用此命令來啟動資料庫
& W. M& g. B( Z% U" a [! pDBMaker 4.2.0 (#4721, 20040924)% d/ Q& c0 Y3 U6 Y/ B( h7 [
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
# Q: q4 Q' A1 ~2 |6 @% L" P8 nSQL Server bound to port 2450 <==已在埠位2450上準備接收request n' C2 \& |( k/ v# e) n4 N
Database Server is running in the background mode.
6 B% d. H4 Y: @ [9 B8 A, mProcess ID = 15668
; [' ` _0 p* M8 U! K6 e) z- d& h$ g5 ?" C
這樣資料庫就啟動了,您可以參考DBMaker的其他手冊,使用其他工具來操作這個資料庫;(有關資料庫服務的埠位、名稱等設定,都記錄在/home/dbmaker/data/dmconfig.ini文檔中,有關此文檔中的相關設定,也請參考DBMaker線上手冊)。' g8 z( J0 ?5 p8 R
在安裝完DBMaker後,應該就可以在/home/dbmaker/4.2/lib/so中,找到DBMaker的odbc native driver。1 r$ W( d2 \4 t3 X% [3 x1 z; I
, e2 b+ h/ W% x+ l3 F
[dbmaker@support bin]$ ls /home/dbmaker/4.2/lib/so/
# I6 f! R+ S* a6 D/ V( x' ^0 ulibdmapic.so libdmjdbc42.so libdmxtt.so libiconv.so.2.2.0
4 j, c5 c2 Y' a, G, _+ M7 V4 I. Y3 flibdmapis.so libdmjsvrut.so libexpat.so libxerces-c.so
# |4 o6 {" G: g/ H" V; dlibdmdttut.so libdmudf.so libiconv.so libxerces-c.so.216 J8 _, j g7 o% A2 f: H( W: O* E8 Q
libdmjdbaut.so libdmxtm.so libiconv.so.2 libxerces-c.so.21.0
, r m! c- k5 O* q. p4 z, S( w; p" u6 q9 x, ]' Z8 ^
其中的dmapic.so,便是DBMaker的native driver;由於DBMaker在開發之初,便是使用ODBC的開發介面,所以DBMaker的Native Driver,便是一符合ODBC API標準的Native Driver;而不像有些資料庫廠商,事實上還是需要另一層薄薄的轉換接口,才能將ODBC API轉成實際的Native Driver API。
9 H: s; c- C' a5 R5 T9 l4 I; H0 d. M4 S% l6 o g
安裝unixODBC$ d8 S0 I& T! T$ ?
接下來談到本文的主角-unixODBC,由於多數人已習慣RedHat的rpm安裝方式,故本文會使用rpm來安裝,至於若要自行build者,請參閱unixODBC的官方網站。
: c/ k* _/ R! s8 `' h8 Z& H首先至官方網站中取得最新的unixODBC package,本文使用的是2.2.3-6的版本。/ i! i/ c, r8 f) j0 u1 i
接著,我們使用rpm將unixODBC安裝上去:+ u$ S M8 k& c
. k- s; F& K: T/ U
[root@support tmp]# rpm -ihv unixODBC-2.2.3-6.i386.rpm
+ \- n. P' ?5 cwarning: unixODBC-2.2.3-6.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
, U$ p. M3 H! s; \ A, lPreparing... ########################################### [100%]
' h# X. I0 I0 U, u[root@support RPMS]# rpm -ql unixODBC|more<==檢查一下到底安裝了那些檔案!
$ T) g9 D0 Z6 G/ ~4 U/etc/odbc.ini <==這是安裝DSN的檔案,本文的重點
! B0 ^( {( f+ n0 h# `$ l/etc/odbcinst.ini <==這是Driver Manager所放置的Driver設定區,亦為本文重點4 T, _" @9 X* A) W
/usr/bin/dltest
9 g& l; |& x. U0 B1 q/usr/bin/isql
v, w5 v; H G2 p$ X4 e/usr/bin/iusql% Z1 K E5 [8 d1 a
/usr/bin/odbcinst
; E" E4 k1 ^# {/ L% r/usr/bin/odbctest
5 ]% L8 q/ O+ Y& k. n, k3 ^/usr/lib/libboundparam.so.1& t1 A' r5 l/ Y6 O
/usr/lib/libboundparam.so.1.0.0
0 H7 M6 [7 ^2 }- ^" v; e: [/usr/lib/libesoobS.so.1
! F* Z( T* H1 w' X- N/usr/lib/libesoobS.so.1.0.00 i) ]4 t5 q$ [: \1 P* r; \4 Z
/usr/lib/libgtrtst.so.1
- o1 ?4 c( m8 t/usr/lib/libgtrtst.so.1.0.0
. R) Y" R9 f8 g. V/usr/lib/libnn.so.1) Q3 m A6 U9 M( t
/usr/lib/libnn.so.1.0.03 v n0 l: ?% |3 i8 H$ y
/usr/lib/libodbc.so4 m; s/ ~' J" ~0 e8 ]& Q$ M0 X
/usr/lib/libodbc.so.1, z+ F- {6 g7 x
/usr/lib/libodbc.so.1.0.0
* O. L8 y& O+ ^, N$ z............
& L, ~) M6 j0 O+ g6 \& _2 W% k/ U, X- I* L5 j
8 r# c7 k a6 l5 a7 A. {) a. S4 I
n, \1 U1 J4 t5 T; `設定unixODBC連接DBMaker 4.21 X) _* r" ]/ g* C8 k+ B% E
如上所述,我們接下來就是要將unixODBC與DBMaker的Driver串接在一起,如同在Windows上,去設定Driver Manager一樣。5 M9 J4 g- j, a
0 o# V6 L8 L1 Y9 X
設定Driver
! N+ e. y$ y- d在Windows的Driver Manager中,我們所使用的Driver,事實上也是需先向Driver Manager登記的,這個動作由於多數是由資料庫廠商的安裝程式作掉,所以User可能完全不知覺。' P" n1 g! I% R e) z
但在unixODBC中,則必須由使用者自己來進行註冊Driver的動作,這個登錄的動作,即是要在/etc/odbcinst.ini中加上DBMaker相關Driver的資訊,我們首先打開這個檔案,並加上下面的幾行:" u* a+ B1 i, b, r/ B
; w" _# t! o- W% e/ n) Z
[root@support RPMS]# more /etc/odbcinst.ini
: t8 v' @/ L- U& T1 p' r# Example driver definitinions
1 p/ p/ S7 |. V" R( ?$ o$ Z1 _#; j- g' G$ p9 g A: I/ W2 E( b
#9 c0 h6 [ i7 k5 U& f, s
) ~# Y0 q' O3 M% A- m% K# Included in the unixODBC package& M5 V8 C! s4 D6 Q. m; y
[PostgreSQL]; P! }* q# i: w. s& J2 \- Z( K* L
Description = ODBC for PostgreSQL
# H% `2 L) a6 l4 X+ d% ]Driver = /usr/lib/libodbcpsql.so, B0 V. s1 t( ^# a9 E$ Y
Setup = /usr/lib/libodbcpsqlS.so
" j0 w9 e5 B6 D0 M5 L' i9 W1 yFileUsage = 15 O% y( h' X/ E& @
..../ D7 ]( d0 M& e
[DBMaker 4.2 Driver] <==這就是您向unixODBC註冊的Driver名稱,可自行定義
! s/ a G4 x0 N" VDescription = ODBC for DBMaker 4.2- ^" } E4 }6 Q
Driver = /home/dbmaker/4.2/lib/so/libdmapic.so <==必須登記您環境中,DBMaker所使用的Driver完整路徑! m9 d3 X0 T0 r ?1 M
#Setup = /usr/lib/libodbcdbmakerS.so
2 y X& j1 E/ K. ~% B$ OFileUsage = 0& o$ Z0 G2 a4 f( S! N% z
% c$ Q& J5 p7 m, i0 i0 t
% ~. Q* k; ~/ o" [0 b8 I5 g- s
在設定Windows的Driver Manager時,在加上一個新的DSN時,資料庫廠商通常都提供一個安裝程式,讓使用者可以登記如Server位置、Port Number、須要使用什麼認證…等等。這個畫面就是上述的「Setup」,由於DBMaker目前在unixODBC中並未提供安裝畫面,故須暫時將它關閉;待之後的版本提供後,再把它開啟。
, O1 C0 s* ?+ n) Y& v- c& E2 ] w h3 E q
設定ODBC DSN
3 B$ w4 B9 g6 X! ?接下來便是設定Data Source Name了(DSN),在Windows時,有所謂的System DSN及User DSN,其實主要的差別便是System DSN是可為所有User所存取,而User DSN則只能為某特定user存取;當login成另一位user時,便看不到原來User登錄的DSN了!9 d% B! O# A) R' Q& v' O
而在unixODBC中,則是使用不同位置的檔案,來存放System DSN及User DSN,在我們的環境中,System DSN會放在/etc/odbc.ini,而User DSN則會放在個別User的家目錄/.odbc.ini。$ ~9 a _5 G8 X5 y
由於我們要使用Web的PHP來連接DBMaker,所以要設定System DSN,以下是我們所放置的內容:
. R, e O3 Z ]2 A/ _9 Q- s0 z: V! Z2 ~, k- x$ G
[dbsample4]7 b3 B& O& P! p/ J: p4 t
Description = Database for dbsample44 v( S) y7 s8 d
Driver = DBMaker 4.2 Driver <==注意,此處須與之前Driver設定的名稱相同" ]+ i+ G0 @: r' a
Database = dbsample4 <== 資料庫名稱
0 S6 a" I1 k7 L' o# Y8 J' jHost = localhost <== server所在位置6 Y; i6 Y, }9 X/ u9 L" }
Port = 2450 <== 埠位置
# L+ `/ `1 j( {* E2 v! vUser = SYSADM <==使用名稱(DBMaker預設所使用的管理者名稱)
2 x6 f; o; ~# B5 D. MPassword = <==使用密碼 (DBMaker預設所使用的管理者密碼)3 C8 y, w) c" L, G4 H& p
當然您可以使用不同的帳號/密碼登入,但此處為方便,使用DBMaker所預設建立的管理者帳號SYSADM,及預設的密碼(空白)8 ]& o9 a' Z- d( p% k' s
# Q d6 C! @( {$ _, E( i) _ x
測試連接
& e6 t, g5 e6 Y! f7 ?接下來,我們使用unixODBC所附的isql來連接dbsample4的資料庫,isql的標準語法為:9 }- {0 [4 A6 ? z9 m
7 |5 q T& k0 Tisql DSN [UID [PWD]] [options]
9 D& S7 f2 {# b5 i, ?6 p我們直接用下方命令來連接資料庫:$ ]1 S' u N4 f7 P
1 E9 t, f- P6 m$ @[root@support RPMS]# isql dbsample4 sysadm
& Z. j) U" M: L. f# z, x; e& @# I5 T& _( H
+---------------------------------------+4 q+ P3 c0 L N1 `/ F Z
7 i4 k" s' u3 o7 y
| Connected! |8 q8 W* {( J8 s; U
1 q6 P" e5 `8 l: d1 g. \) M| |9 X$ s5 W; }2 S0 Z# i
7 W3 G8 y+ [" M' w4 F; x# _| sql-statement |" ^7 F& B z/ V4 y `
2 | K9 F8 E. Y& `/ p
| help [tablename] |) t' y5 G8 Q ~+ P7 t/ \
/ m+ q* w% B ]" k| quit |
4 W# c6 e( N; C$ W9 |( |
, n F5 H; e) {, V* }8 w| |5 J8 W K1 V7 a" N F& G
4 l& m% }8 C- f9 J w6 ?
+---------------------------------------+) R4 V, l2 h5 p% |
5 `! ~: i) O) `. L8 PSQL> select * from SYSTABLE;
$ Z! F) B' c( I. R+ i2 M* P9 \$ b/ l+ V- T# n6 z( f( T
.......
/ G) n9 E6 d, J1 H& ?. t
9 B: z" o+ y5 q3 @
) Q* o1 J% `2 Y5 [) k2 G8 k這樣便可確認我們的確能從unixODBC中,正確連接到DBMaker sample4的資料庫!
9 c$ E- e- R. H# J5 _8 V) t
2 W& s9 n1 i# B4 u7 N+ cPHP+unixODBC+DBMaker
: C1 D( T2 p* M! z. F6 j8 C現在我們能用unixODBC來連接DBMaker了,剩下來的工作就簡單多了,首先我們先確認我們的php是能夠呼叫odbc function的,先用測試程式看看php是否包含了odbc呼叫:+ r1 h7 a2 C4 l
=>存成phptest.php: P: |3 r( V! o: Z ]
然後在Browser底下,查閱Configure Command,是否有--with-unixODBC=shared的文字!
% ]. v* M5 s% S接著再查閱網頁中的ODBC該節,是否顯示ODBC Library為unixODBC!
0 d8 M+ n1 `% j! Q若是以上都無誤的話,您可以撰寫以下的程式php_odbc.php:
* P: w+ M2 t5 ]* e8 T" c
/ f7 e4 j8 G0 }- Y5 y3 `很有可能(最少筆者就碰到),此時卻顯示了無法認識odbc function call;這個問題在筆者這邊碰到時,先查了一下php裝設了那些rpm,後來便發現少裝了php-odbc這個套件,不知道是不是Distribution的問題(筆者裝的是RedHat 9.0)。當正確安裝了 php-odbc-4.2.2-17.i386.rpm後,再執行上述程式,便沒有發現錯誤了!, S) C, Z. X3 H- _) Q* c/ d- u
有關php的設定及它與apache的設定,網站上另有一篇專文,請自行參閱。 n5 B% f9 ^& r
至此已經大功告成,user可以自行撰寫幾個簡單的測試程式,測試看看是否可以正確使用DBMaker,開始撰寫自己的網頁囉~' {7 I6 ?! U* w9 n6 O
% v4 {1 v8 s5 G結語
3 G8 s0 a! O. q6 W5 d使用至今,我們發現unixODBC至少提供了幾個好處:- l( q z; U7 W( n6 ?
提供了Logical DSN對應到實體的Database Name
! @% N! d# F2 x; m可同時連接不同版本的DBMaker
$ x5 t3 l, u" I; E0 {, ~: X/ u' D
! F8 I! o1 A' ^; T+ G3 [* e- s" U提供了邏輯與實體資料庫的轉換6 q0 o# \- @ W, D5 |( }- M
這也是為何Windows ODBC Driver Manager為何歷久不衰的原因;透過odbc.ini的設定,將邏輯的資料庫名稱,對應到實際的driver及database name。這樣的設定,也一併解決了下面要說的版本問題
/ K' g8 |, p7 y) d+ ?. c
2 E" v2 _& o( B連接不同版本的DBMaker
6 r- K6 m8 W. L: V. s6 O- I3 p這是筆者最喜歡的一點!在早期build PHP時,必須要使用下面的方式來生成:
3 R! [" }3 k9 B( D5 A./configure --with-apxs=/usr/sbin/apxs --with-dbmaker=/home/dbmaker/4.2 --enable-track-vars: b m0 U0 E9 m* j$ O
在這樣的設定中,其實已經把DBMaker的版本給設死在面,所build出來的libphp4.so,就是已經設死成只能連接DBMaker 4.2版本。) M; y1 i7 q) @4 F5 }
若是今天想寫一支php程式能同時連接3.7及4.2時,那要怎麼辦呢?這就慘了,因為在這樣的架構下,是沒有辦法作到的。' C! }! h5 S' ~
所以筆者有些機械的php就固定只能連3.7,有些機械就是放4.0;若要跨兩個版本的Database,就只能靠別的方法了。/ B' Z7 p! R+ W9 G6 D
但unixODBC提供了這一層轉換方式,讓libphp4.so不是設死只能連DBMaker 4.2,而是能動態存取外在的ini檔案後,再去連接DBMaker不同版本的so。這樣一來,筆者就能在同一支程式,靠著不同版本在odbc.ini中的設定,而能同時存取了!
: O' _" e, H) c) ?; V! z
- M, @ C& o p, x2 Z更多的應用
2 C4 D5 e# x; B2 ^* D6 }* Y1 Y# G目前unixODBC已逐漸廣為人所接受,不單PHP,包括Perl、Python甚至Java-ODBC Bridge都能使用。如此一來,所有的資料源都可以集中交由unixODBC來管理,這個發展過程,在Windows Driver Manager發展之時也都有過,而它顯而易見的好處,造成了Driver Manager及ODBC的風行!而也希望透過這篇文章,幫助使用者瞭解它,學習它,使用它,最後能真正地喜歡它!
|