|
管理員
  
|
1#
大 中
小 發表於 2009-6-10 01:48 PM 只看該作者
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker z0 F2 E5 F9 A& n& X
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker ' O' l* C8 F6 c( V
目錄 " {# O' \( g& [, f2 S) M* f
1 如何在Linux上安裝 unixODBC + DBMaker- ?+ d1 ]; [; s0 o
8 `0 r+ Q Y# g5 j/ Z
2 unixODBC介紹: O+ F' q8 O; t8 n, i4 q
7 Z0 @ E* G. ^. R- v1 ^9 M
3 DBMaker簡介 f6 K1 L9 p% R) h6 B! U
3.1 DBMaker在Linux上的安裝
& _, }) b' F. I* l3 `3.2 下載DBMaker 4.2
. h i2 ~8 c. ^- ]: f9 Y3.3 安裝DBMaker4 q8 ?! o6 x- u; \$ r+ a
3.4 檢視安裝後的環境* s) `* l) B9 r# z8 n. y
% \) T* W" S' n' w5 n/ n5 Y0 c
4 安裝unixODBC
( {) n& C) I6 ~ Q+ v# P1 {( O4.1 設定unixODBC連接DBMaker 4.2
, h0 y7 h: A( |! X0 ~& H7 F 4.1.1 設定Driver
, C% `/ t( K0 n2 l# m 4.1.2 設定ODBC DSN- R9 q7 }. A7 \1 M2 F6 k
4.1.3 測試連接0 G$ r( h, E" ]2 ~4 T% C, Y/ N) u
4.2 PHP+unixODBC+DBMaker
4 R: Q+ c# m; |0 I0 s, D7 \: c6 g# D) U+ ^9 Y. o
5 結語% _# I `5 d7 T3 h
5.1 提供了邏輯與實體資料庫的轉換; D. _' q s9 u* \. }
5.2 連接不同版本的DBMaker
0 y4 n9 Y2 M9 L& k& W! Y5.3 更多的應用 p4 g; ]( @. l$ Q; v" } T& E9 J. R
) z1 o9 H, O! t: l5 n/ R) ?" \( M, `
如何在Linux上安裝 unixODBC + DBMaker7 ^2 g0 l" a) I( ?
在Windows中相當好用的ODBC Driver Manager,在Linux中卻一直沒有相同的設定;而現在Linux也有了類似的unixODBC了!在本文中,除了介紹unixODBC的設定外,也會介紹如何透過PHP去連接DBMaker資料庫,及使用unixODBC所帶來的好處。
) w/ E! \1 y- _6 b( {" L4 h+ B& M. [6 W i$ U8 Z# F
4 o, s m5 ^$ ?9 s t, j+ Q
" W4 Z/ g8 a/ C0 h
+ P; S5 e) _5 h& v% _, E) yunixODBC介紹: \; b* j$ d0 s; @5 ~
ODBC(Open DataBase Connectivity)是一個跨平台的標準介面,從1990年代開始推行以來,一直廣為業界所使用,即使如今有ADO或JDBC等新的標準,在業界中卻仍時常見到這種界面。即是因為推廣的時間久及開放式的架構,讓用戶已經習慣且易於去使用它了。 % a+ I* x# t" h' Q& t
+ \. D% V5 R/ W/ D在Windows中,透過ODBC Driver Manager,各家資料庫可個自保留自己的Native Driver,然後使用一層轉接接口,將相對應的ODBC Call轉化成自己的Native API Call;但在User的角度而言,這兩者在外觀上是完全相同的,而各家資料庫則需負責將標準的ODBC Call,轉換成自己獨特的Native Call。
' V0 n9 N" J8 h
2 s: U4 e4 Y8 P這樣的使用方式,讓ODBC在推出不久,即廣為用戶所接受,User也都習慣在ODBC Driver Manager中註冊自己的Driver,及設定相關的DSN(Data Source Name)。 & I$ [( P, Z1 N. X. x4 A
- ]$ A v% r: L4 l' c: N, p
這樣方便的設計,在Linux中,卻一直欠缺相同的機制;使得當要使用各式語言去連接資料庫時,便得依該語言的特性去重build一版可呼叫Native Call的模組(module),而一旦Build完後,若當中需要一些變動(如版本昇級),常常就要重build一次,這樣的設計使得Linux在使用資料庫時,極為不便!!
- q4 w7 S: N" _0 v2 m4 y- p- S& b& R# \4 o% S: `) x+ g
有鑑於此,便有一unixODBC的組織嚐試在Linux底下,建立類似ODBC Driver Manager的機制。此一機制與ODBC Driver Manager的功能相仿,便是要能提供Runtime的動態變換功能,讓AP可以透過ODBC Driver Manager,動態地載入不同的資料庫Driver,透過這樣的方式去連接資料庫。 1 \2 Z1 L7 W& G5 z* P: M2 r9 _' |
% u4 m& c0 u; K t
如今,許多Distribution廠商都已經將unixODBC列為標準安裝的套件,而愈來愈廣為人知,本文即是要安裝unixODBC,並利用PHP去連接DBMaker 4.2資料庫,並由此來看看使用unixODBC所帶來的方便性。有關unixODBC的其他說明,請參閱官方網站。 2 {! |' L7 i7 H% g
" U. w9 m4 t B" {. v, ?$ U9 I
DBMaker簡介
1 j6 N9 c9 \8 C+ w3 l2 jDBMaker為一跨平台的大型關聯式資料庫,符合SQL 99標準,擁有開放式架構,在處理多媒體、全文檢索上擁有強大的搜尋性能;有關DBMaker Engine部份的介紹,請參閱DBMaker的其他相關文章,本文不再贅述,而只著重在使用unixODBC方式的介紹。
6 G# @" J! V( M0 S) W/ [: O$ |. [0 I; _( z6 b+ j
首先DBMaker是一跨平台的大型資料庫,故在Windows、Linux上的安裝與使用幾乎是一致的。若您尚未使用過DBMaker,我們簡單介紹如何在Linux上安裝DBMaker,與其他資料庫相較,您會發現在Linux安裝DBMaker是一件相當輕鬆愉快的工作。 ! O7 ]- G$ r3 _" \0 E
( ?- P; [0 d `4 t. B- oDBMaker在Linux上的安裝
# B. u0 p/ u! |- x* b! g加入dbmaker的user 首先您須在Linux底下,加入dbmaker這個user,不要忘記請一併將密碼設定好:
, V4 O- o) p. a6 A8 b
5 y4 e" i+ R w* d$ ]* a1 q, [6 {3 G
' F W& _3 c( _0 R[root@support root]# adduser dbmaker
+ {! a) o, E1 o7 q[root@support root]# passwd dbmaker" B6 A* i( G& i* }. P O* u& {- V
Changing password for user dbmaker.
" `) X! t. H" n. @! w5 {New password:
; t' m% B* N# L# rRetype new password: y) d+ q* R) y1 K, ?
passwd: all authentication tokens updated successfully.' L; y' i8 S! [: r6 H- e
% O3 W' _! y' S+ T+ L8 \
一般說來,除非另行指定,否則dbmaker的家目錄會放在/home/dbmaker底下。 + S$ @+ Z: ]' D( h" ?( k& {
0 \" Z6 v* }+ r9 e' ^
下載DBMaker 4.2
. c& j- Z4 c2 N" s接下來,請至DBMaker的官方網站下載區,去下載最新的DBMaker 4.2版本,將其放在適當的地方。(本文將其放置在/tmp底下) 5 q& V5 W. D6 p
/ N$ K, M) |, _% q* N/ e6 _! x5 t/ D
[root@support tmp]# pwd
: m$ L4 _" l1 V( d! Y7 H/tmp4 U# u) I; R) m0 ]0 x5 m7 f
[root@support tmp]# ls -al dbm** x* k' t' P) p- P# \+ w3 w! D2 a
-rwxr--r-- 1 alen alen 34649895 11§ 23 14:48 dbmaker-4.2.0-Linux2.x86.tar.gz
% U% `% i: b0 z6 G2 [) s' K[root@support tmp]# tar zxvof dbmaker-4.2.0-Linux2.x86.tar.gz <==解壓縮
) |2 b6 H- S5 W8 Bdm420.tar
- b. [8 B$ e! |# S. p5 ]setup3 k* Y) F! I$ e/ c9 n
# a3 N6 S6 x8 }1 i# N" p
安裝DBMaker: Z0 H0 d- Y0 w2 _, D
接下來,請切換至dbmaker這個user,並執行setup程式,為了能正確執行setup,請將setup程式改變模式成「可執行」。 4 d8 q! b5 A& Z& D! O
; r1 E3 y" ^9 z$ d. X) b* t
2 j. v% U; B0 G# l" ^$ ]; X
[root@support tmp]# chmod a+x setup <==切換成可執行3 T* S! @) A9 g" i( ^- ? S- o
[root@support tmp]# su dbmaker <==切換成dbmaker後,進行安裝
5 T O5 M* k2 O9 o! @7 O3 g+ k[dbmaker@support tmp]$ ./setup, [7 j; y* z9 c
8 `, Z$ ?; B# \9 r
( d/ i& w2 E, l d. R* p% F/ }
==============================================================
7 t3 b, q6 v3 A- I; g& O1 KDBMaker Database Management System Installation
7 ?& ^$ {( H+ m- E- G" h" VFor DBMaker Release 4.2.0
) I( d$ F+ h2 Y- k5 z q8 ^Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.6 Y/ ~3 u* q' r) x
==============================================================$ P9 x* L' c0 o) I9 h3 ~- _, ~7 \) A
Install Components:4 t' C- C0 q. t) c6 d; N* w
[A] DBMaker Server .............. (yes) Language: [ Western, Big5 ]' n# b* t# A7 g2 x) B5 U
[B] DBMaker Client ............... (yes)
% H- Z3 n- b& F4 r* ^[C] Sample Programs............... (yes)
* H Q8 ^0 q: a! f$ [- Q! l[D] Tutorial Database.............. (no)% }4 U. C5 Y5 [! k/ c% B& R$ {
[E] Documentation ................. (no)4 q+ K& s. B- p+ f
Install Path:( Q, B2 T7 G, O# e. B2 ^
DBMaker Home directory: /home/dbmaker% b1 ^$ I: f7 p# B+ i
[Y] Start Install [N] Quit& f& c- e5 r/ [/ V3 e
Please press [ A B C D E Y N ] Y <==為簡單計,請直接使用「Y」進行安裝
" w- w- ~0 l: O( F. o5 k, X0 E$ a" c p
當您按下Start Install後,DBMaker就開始安裝,約1-3分鐘內,安裝便可完成,可說是又快速、又方便呢!
; q0 w! p/ {/ m3 ~. l8 ]9 x6 u4 h" G8 ?3 ], J5 C8 ~% Y8 W
檢視安裝後的環境
* k" V: y$ ?# ~4 y7 h6 x2 j在上述安裝完DBMaker後,DBMaker會自動產生一個範例資料庫-DBSample4,我們可以用下面的方法來啟動這個資料庫:
" G/ E) x# B, x5 O# ]) B& w: t, I% l, Z; {$ c( ~6 l
--------------------------------------------------------------------------------
C" k; A) G# ~[dbmaker@support bin]$ cd /home/dbmaker/4.2/bin <=切換至命令目錄,注意此時使用的user為dbmaker!
* K5 j3 V' s8 a[dbmaker@support bin]$ ./dmserver dbsample4 <= 使用此命令來啟動資料庫. P5 o; J9 ^6 M$ u
DBMaker 4.2.0 (#4721, 20040924)3 n/ w% w7 D6 _- J" ]
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.+ O/ T8 K9 T$ @4 `; M0 E
SQL Server bound to port 2450 <==已在埠位2450上準備接收request
- D6 @: {' c" _Database Server is running in the background mode.# s' a9 a' A/ i5 a9 D. j
Process ID = 15668- w7 G) d9 t# v) |' {8 l( O) b
/ P& ?, s! |4 v3 `* y
這樣資料庫就啟動了,您可以參考DBMaker的其他手冊,使用其他工具來操作這個資料庫;(有關資料庫服務的埠位、名稱等設定,都記錄在/home/dbmaker/data/dmconfig.ini文檔中,有關此文檔中的相關設定,也請參考DBMaker線上手冊)。
, m2 Z0 T8 n& L, \1 t在安裝完DBMaker後,應該就可以在/home/dbmaker/4.2/lib/so中,找到DBMaker的odbc native driver。' y7 U2 y0 l: J# I: q8 z B
# H, x# }, V4 F5 E[dbmaker@support bin]$ ls /home/dbmaker/4.2/lib/so/8 A$ ]" G8 P8 V7 Z( a
libdmapic.so libdmjdbc42.so libdmxtt.so libiconv.so.2.2.0$ H2 L) ~% ]# D
libdmapis.so libdmjsvrut.so libexpat.so libxerces-c.so
- e( P2 i/ b, F3 y+ llibdmdttut.so libdmudf.so libiconv.so libxerces-c.so.21
2 z1 w! a) K k* j* ~libdmjdbaut.so libdmxtm.so libiconv.so.2 libxerces-c.so.21.0
. n/ K" P4 z- @
0 ?. H: M1 i' Q- N* d$ g2 R' m其中的dmapic.so,便是DBMaker的native driver;由於DBMaker在開發之初,便是使用ODBC的開發介面,所以DBMaker的Native Driver,便是一符合ODBC API標準的Native Driver;而不像有些資料庫廠商,事實上還是需要另一層薄薄的轉換接口,才能將ODBC API轉成實際的Native Driver API。
3 D2 i# x9 U' D& d- Z$ s/ f% h B" ?" R, s/ T: {/ V- A
安裝unixODBC
6 b7 r" U! j0 w `( P接下來談到本文的主角-unixODBC,由於多數人已習慣RedHat的rpm安裝方式,故本文會使用rpm來安裝,至於若要自行build者,請參閱unixODBC的官方網站。
1 i" Q% O$ m. e首先至官方網站中取得最新的unixODBC package,本文使用的是2.2.3-6的版本。
2 p$ a' L# r9 K3 Y接著,我們使用rpm將unixODBC安裝上去:" V" f) ?0 L! e! v+ ^
* p1 o- Z6 J$ w' P& c
[root@support tmp]# rpm -ihv unixODBC-2.2.3-6.i386.rpm
; p7 M" @) i8 [/ v% q9 _- ~warning: unixODBC-2.2.3-6.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
+ t7 z# m% t5 J- E% ?Preparing... ########################################### [100%]6 U! I- d, a9 `7 o8 w4 ]
[root@support RPMS]# rpm -ql unixODBC|more<==檢查一下到底安裝了那些檔案!
( b; Q9 R# F' {/etc/odbc.ini <==這是安裝DSN的檔案,本文的重點
! E y, p# W% B3 K9 p/etc/odbcinst.ini <==這是Driver Manager所放置的Driver設定區,亦為本文重點: \, I2 N J2 @6 H3 _) o' h
/usr/bin/dltest
/ K6 l4 F: H7 g9 c/usr/bin/isql
, y: p4 x4 f7 X. ^# r/usr/bin/iusql
( G% i# h m. X% M/usr/bin/odbcinst- a- n/ O, x% |! u
/usr/bin/odbctest
% C9 _$ C6 x4 t# \6 n/usr/lib/libboundparam.so.19 B5 S @4 [8 h$ z: v- S$ v
/usr/lib/libboundparam.so.1.0.07 e. w2 j% w# X4 D \
/usr/lib/libesoobS.so.1. ]! ] c' ?1 o& x" j$ t3 I
/usr/lib/libesoobS.so.1.0.0# K7 G6 n6 H- {* n5 a- C& b
/usr/lib/libgtrtst.so.1
3 L# H7 n5 c5 b5 Y; P2 D# |/usr/lib/libgtrtst.so.1.0.0
8 j' n! Z& \. i1 `/usr/lib/libnn.so.1
5 {, Q" j, {% i/ R) V/usr/lib/libnn.so.1.0.0, E6 G+ h v7 L+ q! W% I2 q, l
/usr/lib/libodbc.so
3 n+ B; L# J- m8 E, C; W1 S5 ]/usr/lib/libodbc.so.1
) P6 Y, L* [+ P6 [* ` F/usr/lib/libodbc.so.1.0.03 i3 i* F' r4 y5 a2 S4 I
............
2 Q' B# t1 s6 i3 Z7 I/ J( G) g6 p. L0 D# i: S
S% }$ m8 d3 {* }( Y
) @% |% \" F- K! _( e0 ~$ N設定unixODBC連接DBMaker 4.2
1 o! P/ R9 H! H如上所述,我們接下來就是要將unixODBC與DBMaker的Driver串接在一起,如同在Windows上,去設定Driver Manager一樣。
, f* X# ]4 c: U( T; v9 a4 T
/ s, X7 E0 f# S$ X設定Driver
* B" t. g* v c- X# O+ Z0 l在Windows的Driver Manager中,我們所使用的Driver,事實上也是需先向Driver Manager登記的,這個動作由於多數是由資料庫廠商的安裝程式作掉,所以User可能完全不知覺。4 y5 J) a* a7 j. [# ?
但在unixODBC中,則必須由使用者自己來進行註冊Driver的動作,這個登錄的動作,即是要在/etc/odbcinst.ini中加上DBMaker相關Driver的資訊,我們首先打開這個檔案,並加上下面的幾行:
% J$ X0 ^ Y* Y7 g
( a, {: i% \: K4 K+ ~[root@support RPMS]# more /etc/odbcinst.ini
- D9 b$ |5 Z8 M; }0 f1 W# Example driver definitinions
4 z, v# E- D8 d% L$ @$ c* p, z- s#
) W- i3 W8 W7 o; \#6 o& N) ~4 y4 P6 A2 T
% ?; @" P8 d/ Q# Included in the unixODBC package. P" Q3 g' D! p0 q( J
[PostgreSQL]6 B ? q' [$ N! i5 H2 H
Description = ODBC for PostgreSQL
3 M& I; U" A. w# QDriver = /usr/lib/libodbcpsql.so
# Z% A: `' I5 s) v, j- ySetup = /usr/lib/libodbcpsqlS.so
# a z8 j& }4 E2 J6 A% S* RFileUsage = 1+ v" l, e' Q) `
....
( \- a( ^7 `$ M$ |9 V* N[DBMaker 4.2 Driver] <==這就是您向unixODBC註冊的Driver名稱,可自行定義
D9 t# s% E/ ~5 nDescription = ODBC for DBMaker 4.2. d' |' e# l) I3 K
Driver = /home/dbmaker/4.2/lib/so/libdmapic.so <==必須登記您環境中,DBMaker所使用的Driver完整路徑
& O8 Z" h) I. U$ W! T#Setup = /usr/lib/libodbcdbmakerS.so
, g* {+ w' J& P* q+ ]4 xFileUsage = 0; h; d1 b) r; J- g
6 \6 ~% X/ d/ \/ M7 S9 M- ^& W- t9 ]4 o3 Q& ^- H' S
在設定Windows的Driver Manager時,在加上一個新的DSN時,資料庫廠商通常都提供一個安裝程式,讓使用者可以登記如Server位置、Port Number、須要使用什麼認證…等等。這個畫面就是上述的「Setup」,由於DBMaker目前在unixODBC中並未提供安裝畫面,故須暫時將它關閉;待之後的版本提供後,再把它開啟。, U! d# T7 z8 I. M: A G: n
9 u& f; q2 v6 l# r$ s" w0 x. @
設定ODBC DSN
* O Q0 g4 w+ q: e. I U接下來便是設定Data Source Name了(DSN),在Windows時,有所謂的System DSN及User DSN,其實主要的差別便是System DSN是可為所有User所存取,而User DSN則只能為某特定user存取;當login成另一位user時,便看不到原來User登錄的DSN了!
; H; T7 `) A9 S: J# ^1 R5 }而在unixODBC中,則是使用不同位置的檔案,來存放System DSN及User DSN,在我們的環境中,System DSN會放在/etc/odbc.ini,而User DSN則會放在個別User的家目錄/.odbc.ini。
1 _! Z1 P6 H/ a6 ^4 U; b由於我們要使用Web的PHP來連接DBMaker,所以要設定System DSN,以下是我們所放置的內容:
6 d( \# C/ h1 S+ j+ j3 M
7 k4 [$ T7 \) O+ }* @( ~8 n[dbsample4]2 q- P! b1 J" p
Description = Database for dbsample4, d; a* \% c& W. a7 ?
Driver = DBMaker 4.2 Driver <==注意,此處須與之前Driver設定的名稱相同" D$ J- b* y/ M8 S# p7 V; f' ^
Database = dbsample4 <== 資料庫名稱/ S5 h7 K' T d- g5 y! l
Host = localhost <== server所在位置
) N1 O5 n/ ~$ d, yPort = 2450 <== 埠位置
9 ^" r9 L1 z, f( YUser = SYSADM <==使用名稱(DBMaker預設所使用的管理者名稱) k) F& G+ T# y$ y. M F9 [
Password = <==使用密碼 (DBMaker預設所使用的管理者密碼)
; j$ i0 Y/ Z+ }8 ], R當然您可以使用不同的帳號/密碼登入,但此處為方便,使用DBMaker所預設建立的管理者帳號SYSADM,及預設的密碼(空白)% U" _: S9 d4 T* w. ~
" @# T% y/ E" n" Y8 h0 }測試連接
1 D* U+ s/ M2 ?$ D. L' M; V接下來,我們使用unixODBC所附的isql來連接dbsample4的資料庫,isql的標準語法為:" y( G+ N. u f& F$ U' R& }& [" D, ^8 `
, e) w# ^& @8 W+ X, X: P
isql DSN [UID [PWD]] [options]' o# o8 h/ y8 L" J2 b* P
我們直接用下方命令來連接資料庫:6 F7 ]( W. E$ {
' }0 B" M$ y* @
[root@support RPMS]# isql dbsample4 sysadm' Y+ x" U: h( o- ]8 o% N
, `5 X1 m( O5 h _% o1 O) g s' i+---------------------------------------+: d/ a- b0 _& }1 a `
$ U4 k) w; E( W: V& _| Connected! |0 Z7 G7 @ P1 y) c
4 I. L! k8 r4 C/ D| |# d" @" Y. T' P
- r6 o. e( C# h7 r7 k+ H| sql-statement |
& x$ D, H+ y$ y7 G' Z+ E. c9 j
3 J6 B7 E& B2 z5 k| help [tablename] |# n' n2 g, Q& X# E4 `) }" _ C9 m
# F0 G+ d }$ _+ l c9 s2 v
| quit |, B* S! E/ c m' z8 V3 |" M
7 V9 X# |4 y' Y4 s| |
; j! v7 K% _/ s- o0 {. p8 d( m' t% P) i3 \5 c
+---------------------------------------+
' B/ i A- h/ I3 G4 Y. q% N) C! ]. A6 s5 \4 S& S% O+ t+ o
SQL> select * from SYSTABLE;, X1 m) n- A8 ^, @% g
0 P( s9 n5 i) Q, U! a" o' I ^
.......0 T2 `% o4 y7 {" j$ M+ r+ n0 n
* m8 R+ N: e( [9 e' F
1 k/ C- K2 m' O8 B, B3 P這樣便可確認我們的確能從unixODBC中,正確連接到DBMaker sample4的資料庫!
+ m7 Q. l: B% v- r% h( [# G& O; f
PHP+unixODBC+DBMaker
6 j8 e' b. g3 h) E5 k0 K現在我們能用unixODBC來連接DBMaker了,剩下來的工作就簡單多了,首先我們先確認我們的php是能夠呼叫odbc function的,先用測試程式看看php是否包含了odbc呼叫:
3 N9 t1 E- }+ d! U. ^+ l9 O8 d=>存成phptest.php% t2 c# f% b+ G* |- w* j
然後在Browser底下,查閱Configure Command,是否有--with-unixODBC=shared的文字!- B7 z9 n: ?4 U7 s# B
接著再查閱網頁中的ODBC該節,是否顯示ODBC Library為unixODBC!8 n6 u1 _& F- t
若是以上都無誤的話,您可以撰寫以下的程式php_odbc.php:2 ^6 b0 V2 \, q5 h T/ \
7 R3 F# U, |0 K" u: N$ g
很有可能(最少筆者就碰到),此時卻顯示了無法認識odbc function call;這個問題在筆者這邊碰到時,先查了一下php裝設了那些rpm,後來便發現少裝了php-odbc這個套件,不知道是不是Distribution的問題(筆者裝的是RedHat 9.0)。當正確安裝了 php-odbc-4.2.2-17.i386.rpm後,再執行上述程式,便沒有發現錯誤了!! w5 k$ m; }/ U) B9 N2 j+ c" k
有關php的設定及它與apache的設定,網站上另有一篇專文,請自行參閱。2 `7 F% i" L& V. ]4 n0 a5 s
至此已經大功告成,user可以自行撰寫幾個簡單的測試程式,測試看看是否可以正確使用DBMaker,開始撰寫自己的網頁囉~
% {# d6 y9 s; l" K- X
' ]' C0 `3 j% [5 e/ b9 _結語
9 D. H* a/ E' i2 X2 B使用至今,我們發現unixODBC至少提供了幾個好處:
$ F# K `5 a2 r. X1 C+ d; h8 Q提供了Logical DSN對應到實體的Database Name / |7 R7 [$ R) `8 C
可同時連接不同版本的DBMaker
6 E3 [8 ^+ D1 \! [! l
( O) G) b1 ]3 M: h$ C$ i. p提供了邏輯與實體資料庫的轉換" b. M9 M9 Z* e+ x, Z
這也是為何Windows ODBC Driver Manager為何歷久不衰的原因;透過odbc.ini的設定,將邏輯的資料庫名稱,對應到實際的driver及database name。這樣的設定,也一併解決了下面要說的版本問題
% S P& N( h/ i5 m: ?9 X4 N% |* U3 ~, y% b/ P
連接不同版本的DBMaker- K. P- r0 d0 t; P1 X1 A
這是筆者最喜歡的一點!在早期build PHP時,必須要使用下面的方式來生成:. U/ ?. Q6 C5 X0 c) e# x5 D- u y
./configure --with-apxs=/usr/sbin/apxs --with-dbmaker=/home/dbmaker/4.2 --enable-track-vars# q# b, E0 ~4 o, ?* }2 F) b
在這樣的設定中,其實已經把DBMaker的版本給設死在面,所build出來的libphp4.so,就是已經設死成只能連接DBMaker 4.2版本。6 V% s/ v+ D e0 W9 u0 }% N4 O- J
若是今天想寫一支php程式能同時連接3.7及4.2時,那要怎麼辦呢?這就慘了,因為在這樣的架構下,是沒有辦法作到的。
7 X/ d$ [$ [( O. P7 |所以筆者有些機械的php就固定只能連3.7,有些機械就是放4.0;若要跨兩個版本的Database,就只能靠別的方法了。
/ Z- n# ^* c% V$ n: {6 p6 y3 s% C! X但unixODBC提供了這一層轉換方式,讓libphp4.so不是設死只能連DBMaker 4.2,而是能動態存取外在的ini檔案後,再去連接DBMaker不同版本的so。這樣一來,筆者就能在同一支程式,靠著不同版本在odbc.ini中的設定,而能同時存取了!
0 }, F3 A+ e+ q6 c+ e' X+ _6 p0 s# p) Z/ E# u9 T5 c
更多的應用 y6 w) H8 a+ n: @/ F
目前unixODBC已逐漸廣為人所接受,不單PHP,包括Perl、Python甚至Java-ODBC Bridge都能使用。如此一來,所有的資料源都可以集中交由unixODBC來管理,這個發展過程,在Windows Driver Manager發展之時也都有過,而它顯而易見的好處,造成了Driver Manager及ODBC的風行!而也希望透過這篇文章,幫助使用者瞭解它,學習它,使用它,最後能真正地喜歡它!
|