|
管理員
  
|
1#
大 中
小 發表於 2009-6-10 01:48 PM 只看該作者
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker ' e) A6 c! x6 ~/ J9 c: z3 J5 `8 k" n
技術專區 - 如何在Linux上安裝 unixODBC + DBMaker
# q+ w# b& X# P2 m4 |; i目錄 $ ]- X1 E3 Z/ e, P( d4 `
1 如何在Linux上安裝 unixODBC + DBMaker5 X' r: R) ?9 Z
0 [! G/ T- x& f6 C; J$ {2 unixODBC介紹
. Q; t6 ^# F# Z7 o9 d2 a5 l
8 D1 @9 W y5 a+ q7 B# N7 i3 DBMaker簡介
+ l; d& p6 u. {1 q7 p+ V' E3.1 DBMaker在Linux上的安裝' z7 \3 @* F. T! F) Z4 @
3.2 下載DBMaker 4.2
: r) j9 U2 @1 w5 |3.3 安裝DBMaker
& h% n' o6 ~2 K' X' c& J3.4 檢視安裝後的環境, O1 X) s1 k8 V! ?( V9 Y- p" e
# Y; M5 H+ y( W; K& m
4 安裝unixODBC
4 ~& Z* R5 G4 U; B4.1 設定unixODBC連接DBMaker 4.24 {; n* ~$ m6 q/ H. q) [
4.1.1 設定Driver
0 b1 ~" [& H( x7 C& i W* G# w 4.1.2 設定ODBC DSN
. t: X5 J2 J: ~. {* i3 | 4.1.3 測試連接" d% Q8 a# I I" v1 K
4.2 PHP+unixODBC+DBMaker% v& t4 S3 Y; F! S' Y
) m: E2 p% j! ^5 結語
6 K2 t% h" Z" T- q2 u( J; I5.1 提供了邏輯與實體資料庫的轉換) o. t4 M& @" Z9 ]- e4 J
5.2 連接不同版本的DBMaker
% `4 W* C9 X5 ?0 z: [6 x5.3 更多的應用, G; }3 H% L& w0 C1 B. T
- `; F$ S9 ]. H5 }7 A M
2 ^# q! E( B+ P$ E
如何在Linux上安裝 unixODBC + DBMaker+ s, f( ?- U2 Z, g- [
在Windows中相當好用的ODBC Driver Manager,在Linux中卻一直沒有相同的設定;而現在Linux也有了類似的unixODBC了!在本文中,除了介紹unixODBC的設定外,也會介紹如何透過PHP去連接DBMaker資料庫,及使用unixODBC所帶來的好處。 , A7 M5 Q( @0 s8 v& Z
0 B* e+ ^& {# A N- b
9 {4 [/ Q4 n$ V( X- |2 v
- \" a9 Z+ F Y$ j# m0 k
; c, f' L) Z4 t8 ^$ K+ F! J/ YunixODBC介紹
) h, Q, ^; W" P3 a4 q+ ]: {ODBC(Open DataBase Connectivity)是一個跨平台的標準介面,從1990年代開始推行以來,一直廣為業界所使用,即使如今有ADO或JDBC等新的標準,在業界中卻仍時常見到這種界面。即是因為推廣的時間久及開放式的架構,讓用戶已經習慣且易於去使用它了。 9 X' u4 O, V) E9 c
$ I* B3 e" k% w2 r在Windows中,透過ODBC Driver Manager,各家資料庫可個自保留自己的Native Driver,然後使用一層轉接接口,將相對應的ODBC Call轉化成自己的Native API Call;但在User的角度而言,這兩者在外觀上是完全相同的,而各家資料庫則需負責將標準的ODBC Call,轉換成自己獨特的Native Call。 ) q/ w* T5 ~7 k3 e4 r o
9 z& X) E, U! r) \1 ~
這樣的使用方式,讓ODBC在推出不久,即廣為用戶所接受,User也都習慣在ODBC Driver Manager中註冊自己的Driver,及設定相關的DSN(Data Source Name)。
& o# Y+ t5 T+ Q8 C$ z- ]5 j% o6 D% ^' \3 U$ @& y
這樣方便的設計,在Linux中,卻一直欠缺相同的機制;使得當要使用各式語言去連接資料庫時,便得依該語言的特性去重build一版可呼叫Native Call的模組(module),而一旦Build完後,若當中需要一些變動(如版本昇級),常常就要重build一次,這樣的設計使得Linux在使用資料庫時,極為不便!! 0 ?/ c4 K- C0 o Y
- u- o' ? t1 {) y9 u有鑑於此,便有一unixODBC的組織嚐試在Linux底下,建立類似ODBC Driver Manager的機制。此一機制與ODBC Driver Manager的功能相仿,便是要能提供Runtime的動態變換功能,讓AP可以透過ODBC Driver Manager,動態地載入不同的資料庫Driver,透過這樣的方式去連接資料庫。
3 B: c% z* V4 k. k; H- z+ G* a/ ]9 V6 d) e6 S' t
如今,許多Distribution廠商都已經將unixODBC列為標準安裝的套件,而愈來愈廣為人知,本文即是要安裝unixODBC,並利用PHP去連接DBMaker 4.2資料庫,並由此來看看使用unixODBC所帶來的方便性。有關unixODBC的其他說明,請參閱官方網站。
: j+ m S9 W3 Y( u' T+ d- N* }% |
DBMaker簡介
0 \# N. D2 u0 a) K) l6 ~0 _/ qDBMaker為一跨平台的大型關聯式資料庫,符合SQL 99標準,擁有開放式架構,在處理多媒體、全文檢索上擁有強大的搜尋性能;有關DBMaker Engine部份的介紹,請參閱DBMaker的其他相關文章,本文不再贅述,而只著重在使用unixODBC方式的介紹。
, s" N7 _ b5 y, p. X6 h
8 |0 |/ e: {; ]4 [8 s首先DBMaker是一跨平台的大型資料庫,故在Windows、Linux上的安裝與使用幾乎是一致的。若您尚未使用過DBMaker,我們簡單介紹如何在Linux上安裝DBMaker,與其他資料庫相較,您會發現在Linux安裝DBMaker是一件相當輕鬆愉快的工作。 * u% F; ^" N) c& h) ` @
, o2 A8 ]$ N. ~4 Y5 c& Y( d$ i
DBMaker在Linux上的安裝
( J: w! G6 I! h+ [加入dbmaker的user 首先您須在Linux底下,加入dbmaker這個user,不要忘記請一併將密碼設定好: ; p) H( z* ?5 H- L
+ L' k* T# m5 x. D1 C: K& D+ M
6 M, C* c- D7 H% a9 Y[root@support root]# adduser dbmaker' L; s6 g. B% A% W1 y& Q
[root@support root]# passwd dbmaker
0 s4 P9 d4 |( S' t* B/ v$ tChanging password for user dbmaker.
2 G$ R( x+ _2 \7 z4 D" t: Q- `$ bNew password: # x9 P! b$ \; U7 q! C$ j4 _
Retype new password: 1 O* g; H K0 M% J7 _3 [! O8 [
passwd: all authentication tokens updated successfully.( n& @9 I0 X, O4 b+ {8 a
6 l- B6 a) ?1 r$ J1 }/ d9 w! G
一般說來,除非另行指定,否則dbmaker的家目錄會放在/home/dbmaker底下。 % c/ q' W4 H% x5 O% u
( l4 W% S: ?# @& H) L下載DBMaker 4.2
( C5 T; Y2 a- k0 ^/ \. l5 o, S接下來,請至DBMaker的官方網站下載區,去下載最新的DBMaker 4.2版本,將其放在適當的地方。(本文將其放置在/tmp底下)
. ?2 u% R- |" Q5 w: S
' p% M* |) D0 l! M( v. z3 C/ @[root@support tmp]# pwd
2 _* m' U- T3 r2 x# A/tmp
& y* B6 u" b5 M' A. b) u[root@support tmp]# ls -al dbm*' ~, `) z8 i. j! H1 C6 r
-rwxr--r-- 1 alen alen 34649895 11§ 23 14:48 dbmaker-4.2.0-Linux2.x86.tar.gz
, K0 D+ c6 }0 F$ ]. M2 b+ Y[root@support tmp]# tar zxvof dbmaker-4.2.0-Linux2.x86.tar.gz <==解壓縮4 f% }1 | v" O% j7 `
dm420.tar$ `, I& v7 ]9 Q( x
setup+ ~, m# U; W+ V( J" x
! `( k z, t7 J安裝DBMaker
" |; q2 r, G+ _# z: M$ w! G9 l5 k接下來,請切換至dbmaker這個user,並執行setup程式,為了能正確執行setup,請將setup程式改變模式成「可執行」。 " s; _) G$ Y; b) P
: G7 N5 Q" R8 y
, Z0 ]; ^: I7 X& x. d! L2 {5 _
[root@support tmp]# chmod a+x setup <==切換成可執行$ ]" d! {! b1 u# l
[root@support tmp]# su dbmaker <==切換成dbmaker後,進行安裝9 i2 g; N6 n" t5 u# h
[dbmaker@support tmp]$ ./setup
1 `1 D/ ]8 N4 n; }
, z h$ @% d$ S4 K# O8 o+ |; \, Q# \' h3 C' t( ?; S
==============================================================
& V" `( K1 e; j1 W# }DBMaker Database Management System Installation
" L! j# K' L# [For DBMaker Release 4.2.0
/ d x+ v, J& y& T3 OCopyright(C) 1995-2004 CASEMaker Inc. All rights reserved.% g$ W; S6 ?) G: r
==============================================================# o! s7 o3 I6 _' F
Install Components:0 a( J* q! L3 j' e( N. P/ D7 D+ t
[A] DBMaker Server .............. (yes) Language: [ Western, Big5 ]
) _& A, ?* d' z: U* h[B] DBMaker Client ............... (yes)1 `8 \9 ~4 C0 {3 F! J! W, e; X* {
[C] Sample Programs............... (yes)8 d% U& S& R% }
[D] Tutorial Database.............. (no)
4 E) M& P: ^; J) H[E] Documentation ................. (no)
; H4 F1 u2 J D5 V' ~Install Path:
0 H) M" I1 V, G5 N+ y% oDBMaker Home directory: /home/dbmaker: V) Z* R; R% n* b8 q' Z; r% B! p
[Y] Start Install [N] Quit
) _4 c/ `" P" o$ ZPlease press [ A B C D E Y N ] Y <==為簡單計,請直接使用「Y」進行安裝. R- p9 S) v6 v% f- w
4 t% H) E! h. |8 m) n當您按下Start Install後,DBMaker就開始安裝,約1-3分鐘內,安裝便可完成,可說是又快速、又方便呢!
5 `3 n5 g: ]! i1 y, S* l! i
' p! g, }: @% m! N# u1 m( q( |檢視安裝後的環境 y0 x4 g V& l/ c/ R/ d+ F
在上述安裝完DBMaker後,DBMaker會自動產生一個範例資料庫-DBSample4,我們可以用下面的方法來啟動這個資料庫:' l3 r0 _; p1 m/ B: W
3 R6 C, `* F/ U" Q--------------------------------------------------------------------------------
/ v. Q1 V# _! ^5 `+ `[dbmaker@support bin]$ cd /home/dbmaker/4.2/bin <=切換至命令目錄,注意此時使用的user為dbmaker!
! m! f' j+ Q1 N9 `$ ~9 T# r, j[dbmaker@support bin]$ ./dmserver dbsample4 <= 使用此命令來啟動資料庫
, H+ i& g& l* O! ]% v, F& ]3 G. ~DBMaker 4.2.0 (#4721, 20040924): L% V0 w- }8 ^) m, j: P
Copyright(C) 1995-2004 CASEMaker Inc. All rights reserved.
( y. ]+ D& x" m9 q1 E1 }SQL Server bound to port 2450 <==已在埠位2450上準備接收request
5 G8 C/ Y+ o# A" GDatabase Server is running in the background mode.0 {$ i$ h5 P9 U F) n
Process ID = 15668
0 Z" V$ y0 M+ I! B/ b3 j# Q# @+ X4 z% C, `* @
這樣資料庫就啟動了,您可以參考DBMaker的其他手冊,使用其他工具來操作這個資料庫;(有關資料庫服務的埠位、名稱等設定,都記錄在/home/dbmaker/data/dmconfig.ini文檔中,有關此文檔中的相關設定,也請參考DBMaker線上手冊)。6 M6 j0 l8 Z3 U& T9 g- K# f6 m
在安裝完DBMaker後,應該就可以在/home/dbmaker/4.2/lib/so中,找到DBMaker的odbc native driver。( k3 V1 Y1 K, ?) H' R
+ ]9 U- \, n3 O+ e4 I
[dbmaker@support bin]$ ls /home/dbmaker/4.2/lib/so/2 n) p# V3 z; D* g9 x) o+ l" f I
libdmapic.so libdmjdbc42.so libdmxtt.so libiconv.so.2.2.0
5 l! r7 `. @* u ~libdmapis.so libdmjsvrut.so libexpat.so libxerces-c.so3 Q: E" q: {4 g/ w7 Q) [
libdmdttut.so libdmudf.so libiconv.so libxerces-c.so.21
9 Z2 w2 _* l7 S! a1 ^. wlibdmjdbaut.so libdmxtm.so libiconv.so.2 libxerces-c.so.21.0" D4 B* T; X' t
. T$ [, I# H1 ]' j2 y5 M0 P
其中的dmapic.so,便是DBMaker的native driver;由於DBMaker在開發之初,便是使用ODBC的開發介面,所以DBMaker的Native Driver,便是一符合ODBC API標準的Native Driver;而不像有些資料庫廠商,事實上還是需要另一層薄薄的轉換接口,才能將ODBC API轉成實際的Native Driver API。# l- z' H0 @2 y- h; R' c
- w( ~0 b, f* q) a7 D安裝unixODBC, O1 g0 @( V; h3 \7 ~. W1 \- Q
接下來談到本文的主角-unixODBC,由於多數人已習慣RedHat的rpm安裝方式,故本文會使用rpm來安裝,至於若要自行build者,請參閱unixODBC的官方網站。/ R# V/ s9 m% \* H5 D
首先至官方網站中取得最新的unixODBC package,本文使用的是2.2.3-6的版本。5 k+ A% N8 n+ \) E
接著,我們使用rpm將unixODBC安裝上去:. z: G1 `! Z5 G. Y4 a J1 P
% A" |6 K, y# [' D4 S
[root@support tmp]# rpm -ihv unixODBC-2.2.3-6.i386.rpm # S' t# K* B0 Y5 [
warning: unixODBC-2.2.3-6.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e( i# S! h3 [7 l) u
Preparing... ########################################### [100%]& z$ C8 N( a4 C* n1 Q3 r
[root@support RPMS]# rpm -ql unixODBC|more<==檢查一下到底安裝了那些檔案!' f3 Q( |4 |2 P, x* d( B
/etc/odbc.ini <==這是安裝DSN的檔案,本文的重點
& C& h6 q; _* V- a/etc/odbcinst.ini <==這是Driver Manager所放置的Driver設定區,亦為本文重點
" ?$ T- m2 |# e0 g5 V% ~/usr/bin/dltest" @+ Y4 X$ W1 y
/usr/bin/isql; Q6 R% \5 s3 ?! X1 j
/usr/bin/iusql: _( {* T3 o4 t. L) y- Z. q
/usr/bin/odbcinst# ]) R, @& O% A' ^1 D+ j
/usr/bin/odbctest
0 H/ k6 I9 Z$ U; i# i" m; U3 P( j K/usr/lib/libboundparam.so.1
8 h l+ Q( ^( y7 ~! |/usr/lib/libboundparam.so.1.0.0! ?2 Q4 Q# w$ d& i5 H
/usr/lib/libesoobS.so.1' O! N5 v$ C$ K( }8 v$ @
/usr/lib/libesoobS.so.1.0.0
: I: ?; M+ T% y( K9 D- C/usr/lib/libgtrtst.so.1
9 K) F* h! W% V4 l5 U. B1 I& O/usr/lib/libgtrtst.so.1.0.0( ]6 [: S8 Y$ g( T
/usr/lib/libnn.so.1* D, p; q$ K+ l9 n
/usr/lib/libnn.so.1.0.0
$ ]2 S5 E$ [ t! g/usr/lib/libodbc.so
5 t2 J7 [5 m! V+ U o% T/usr/lib/libodbc.so.1
+ \/ n B, o Z5 O/usr/lib/libodbc.so.1.0.0
4 Q7 M# t7 I V, b. ]% K$ _& X+ G............8 M. G5 k9 w" q. {( k3 d: q0 W, o
$ F% i: P" l# {
7 t& p3 A h7 z+ a% m- A' l0 s) k+ S6 [. I1 p. Y: l# C
設定unixODBC連接DBMaker 4.2
' l' i% n9 w" G5 ?+ e% m如上所述,我們接下來就是要將unixODBC與DBMaker的Driver串接在一起,如同在Windows上,去設定Driver Manager一樣。
5 C* v5 ^0 h+ n3 v2 y. @. C9 U5 g: f& N2 s& z# Q9 l' _) s- N
設定Driver
0 \2 N9 I" r8 l: {$ p3 o7 ?+ Q在Windows的Driver Manager中,我們所使用的Driver,事實上也是需先向Driver Manager登記的,這個動作由於多數是由資料庫廠商的安裝程式作掉,所以User可能完全不知覺。
3 o5 W$ E. e! A3 ^7 m2 z但在unixODBC中,則必須由使用者自己來進行註冊Driver的動作,這個登錄的動作,即是要在/etc/odbcinst.ini中加上DBMaker相關Driver的資訊,我們首先打開這個檔案,並加上下面的幾行:6 i" Y5 J E' R- d9 E0 X! \
, `6 L% ~0 g: O6 T0 `+ C- r[root@support RPMS]# more /etc/odbcinst.ini
9 o$ R" s7 \) O% D# Example driver definitinions
/ V3 P& \/ X7 Y, ~& ?#1 C6 |; l! p& G; \
#; o0 [+ |% P( ~: a# F# h
& ]: U; v5 @/ i9 ]% p! |# Included in the unixODBC package
* I8 |. s& \- W! ?[PostgreSQL]; i4 c. a6 T" z3 n# _3 J
Description = ODBC for PostgreSQL2 c+ n3 Q7 _' |0 }) l) f6 R, F
Driver = /usr/lib/libodbcpsql.so
+ D- B0 P4 H1 n) RSetup = /usr/lib/libodbcpsqlS.so9 ]/ I# b* t4 Q1 \/ ]
FileUsage = 1
6 R- v$ V7 p' g' H3 Z( }....
2 ]; D( a9 P- m% U" Z3 Z0 j0 v, L6 T[DBMaker 4.2 Driver] <==這就是您向unixODBC註冊的Driver名稱,可自行定義1 z2 a5 ]3 F6 P1 r0 d
Description = ODBC for DBMaker 4.2
9 w @2 n4 J5 o' s' ?$ N- P+ @Driver = /home/dbmaker/4.2/lib/so/libdmapic.so <==必須登記您環境中,DBMaker所使用的Driver完整路徑' X2 N$ r, h& E6 v- D: s# y9 j
#Setup = /usr/lib/libodbcdbmakerS.so! Y/ m( K/ ^, I5 y
FileUsage = 0
8 n- H3 _4 I2 x8 L* r1 r1 Z( a: k8 A8 P! O' z% D& R" {- a; z* O
4 d: v( {6 [/ [/ j; X: D8 N% `
在設定Windows的Driver Manager時,在加上一個新的DSN時,資料庫廠商通常都提供一個安裝程式,讓使用者可以登記如Server位置、Port Number、須要使用什麼認證…等等。這個畫面就是上述的「Setup」,由於DBMaker目前在unixODBC中並未提供安裝畫面,故須暫時將它關閉;待之後的版本提供後,再把它開啟。/ g# X' F' V# {! t! Q( R4 [( w
, R9 E8 d0 k' E; F3 w
設定ODBC DSN) c8 H; L4 D5 ^
接下來便是設定Data Source Name了(DSN),在Windows時,有所謂的System DSN及User DSN,其實主要的差別便是System DSN是可為所有User所存取,而User DSN則只能為某特定user存取;當login成另一位user時,便看不到原來User登錄的DSN了!0 g& V5 p% T8 Y; U! Y1 R; n% C. X
而在unixODBC中,則是使用不同位置的檔案,來存放System DSN及User DSN,在我們的環境中,System DSN會放在/etc/odbc.ini,而User DSN則會放在個別User的家目錄/.odbc.ini。1 P# r' {+ C/ x. h7 z. ~
由於我們要使用Web的PHP來連接DBMaker,所以要設定System DSN,以下是我們所放置的內容:
5 Z. f4 w8 u) |: D4 A6 l
9 y7 f7 J7 c" v; L[dbsample4]
0 V1 n9 w5 V U5 d4 Q, m9 z7 t5 zDescription = Database for dbsample4
9 G; j3 }' {5 p7 w& X2 c; X" ADriver = DBMaker 4.2 Driver <==注意,此處須與之前Driver設定的名稱相同
( E) C) `+ v- q# T3 Y" f7 XDatabase = dbsample4 <== 資料庫名稱/ l# b5 p5 E6 o4 _
Host = localhost <== server所在位置
8 u" J# g' Y7 A: c- b3 wPort = 2450 <== 埠位置
" r/ O' D5 z( w& n4 v8 |User = SYSADM <==使用名稱(DBMaker預設所使用的管理者名稱): H0 F) H2 E4 R* x/ G- t
Password = <==使用密碼 (DBMaker預設所使用的管理者密碼)0 z5 L; Z4 C2 a1 r; [0 y
當然您可以使用不同的帳號/密碼登入,但此處為方便,使用DBMaker所預設建立的管理者帳號SYSADM,及預設的密碼(空白)
. j2 S8 t/ t& V, K& U, u4 @8 F
6 i- L" y. y0 M; z測試連接: t+ C7 ], r8 Q% r' N N
接下來,我們使用unixODBC所附的isql來連接dbsample4的資料庫,isql的標準語法為:
1 Z! T5 p& W/ F8 U0 Y; K* F- o% k; E
4 H$ t: \0 Q5 h) S! O5 gisql DSN [UID [PWD]] [options]$ s& M% r# E5 B/ |1 l
我們直接用下方命令來連接資料庫:: x+ V0 S( k% R _, S; d0 M
6 v3 _7 @* C, s D& K4 X0 u[root@support RPMS]# isql dbsample4 sysadm
' L9 I0 ~; a: R# [- A% \# \) {# @ `
, O7 f+ ]9 M3 T: ~* `5 p+---------------------------------------+
9 q8 n$ z! p. }' c3 v* `6 D/ |4 C! A. f3 D7 k& j5 E% A
| Connected! |$ i1 U% x; |" T5 l; F
0 {. ]# U$ n6 h( W3 s- q/ f| |/ c( J8 r0 |( r: N
' K# \9 P$ c) o1 W& f
| sql-statement |' r. o% V. G3 d" q6 p' s3 o
* ^$ T4 Y a) n+ I# m: z
| help [tablename] |
) l# B/ O# P3 t- b8 F$ K4 K( C+ T8 E5 q7 E X
| quit |
; [6 G% n' n# m4 |1 x. h4 o
( c' N. g6 ?( U' K" E; t| |
+ i& \9 ]& K$ z7 w' |6 ?- A9 y
4 h4 [+ f5 N7 ^7 Q9 P. e7 G+---------------------------------------+( {. S2 u4 [3 K8 o5 n) w* ~4 n8 N
) I) @" M, R/ Y# r$ GSQL> select * from SYSTABLE;
& v2 ~8 O# E0 U# _4 \0 ~* A
' k9 B1 L4 o7 e. K* P.......
" r+ @3 i. I8 B- _) @1 V& s
# j' R' T# H' I9 }; J( S" j9 ]2 x" i2 q% m9 a
這樣便可確認我們的確能從unixODBC中,正確連接到DBMaker sample4的資料庫!& h A: J9 r; ]5 a& f
2 B4 d! n% m. x2 C' V6 K
PHP+unixODBC+DBMaker/ ?& m1 Z% ?& i, W9 _
現在我們能用unixODBC來連接DBMaker了,剩下來的工作就簡單多了,首先我們先確認我們的php是能夠呼叫odbc function的,先用測試程式看看php是否包含了odbc呼叫:7 @- M" W+ `4 Z& C
=>存成phptest.php; F2 G; c) Q4 Z0 m: j& q, k
然後在Browser底下,查閱Configure Command,是否有--with-unixODBC=shared的文字!
7 s+ e* _. r" t% |: S接著再查閱網頁中的ODBC該節,是否顯示ODBC Library為unixODBC!
. f( o% k* @" ]若是以上都無誤的話,您可以撰寫以下的程式php_odbc.php:+ f) i- |$ U: f' N; e3 w) z
, G: H0 p! d+ V A' C. |
很有可能(最少筆者就碰到),此時卻顯示了無法認識odbc function call;這個問題在筆者這邊碰到時,先查了一下php裝設了那些rpm,後來便發現少裝了php-odbc這個套件,不知道是不是Distribution的問題(筆者裝的是RedHat 9.0)。當正確安裝了 php-odbc-4.2.2-17.i386.rpm後,再執行上述程式,便沒有發現錯誤了!' u9 V8 ^5 k$ R! E1 s
有關php的設定及它與apache的設定,網站上另有一篇專文,請自行參閱。
9 p. S9 M% U; [- G, Z至此已經大功告成,user可以自行撰寫幾個簡單的測試程式,測試看看是否可以正確使用DBMaker,開始撰寫自己的網頁囉~
, |$ c. D0 P1 P" d4 i4 v! G1 L/ e% d! @- G' Q
結語
/ P: K- J# S0 L' e7 K: b9 }& Q使用至今,我們發現unixODBC至少提供了幾個好處:4 k; E! E6 W: [9 n
提供了Logical DSN對應到實體的Database Name 7 w4 l% @+ m# \0 x2 q ^
可同時連接不同版本的DBMaker 7 F0 ]* Z6 }, F7 `% @, W
8 k# N, w Q& v) H0 e, h* S提供了邏輯與實體資料庫的轉換2 P& K. [. u, b( J3 _6 G8 `! ^- W
這也是為何Windows ODBC Driver Manager為何歷久不衰的原因;透過odbc.ini的設定,將邏輯的資料庫名稱,對應到實際的driver及database name。這樣的設定,也一併解決了下面要說的版本問題
& D, P/ V) l" A3 o @' c. X! c) E* n5 d8 K
連接不同版本的DBMaker% s* H+ Q# n7 G' K7 l! _
這是筆者最喜歡的一點!在早期build PHP時,必須要使用下面的方式來生成:
, ^/ a3 A2 ~$ H2 T9 H./configure --with-apxs=/usr/sbin/apxs --with-dbmaker=/home/dbmaker/4.2 --enable-track-vars
! f1 C) U6 |& B: ~; v, C. [在這樣的設定中,其實已經把DBMaker的版本給設死在面,所build出來的libphp4.so,就是已經設死成只能連接DBMaker 4.2版本。
$ y8 o/ a$ Q5 O0 M若是今天想寫一支php程式能同時連接3.7及4.2時,那要怎麼辦呢?這就慘了,因為在這樣的架構下,是沒有辦法作到的。* N/ r1 J$ ]7 C; q& \. F. S. Q4 Z
所以筆者有些機械的php就固定只能連3.7,有些機械就是放4.0;若要跨兩個版本的Database,就只能靠別的方法了。
' q: V2 _& u3 ]但unixODBC提供了這一層轉換方式,讓libphp4.so不是設死只能連DBMaker 4.2,而是能動態存取外在的ini檔案後,再去連接DBMaker不同版本的so。這樣一來,筆者就能在同一支程式,靠著不同版本在odbc.ini中的設定,而能同時存取了! B- t4 i# R' m0 Q) u
& \$ M z. k" r5 a更多的應用
_3 P$ u4 F$ \目前unixODBC已逐漸廣為人所接受,不單PHP,包括Perl、Python甚至Java-ODBC Bridge都能使用。如此一來,所有的資料源都可以集中交由unixODBC來管理,這個發展過程,在Windows Driver Manager發展之時也都有過,而它顯而易見的好處,造成了Driver Manager及ODBC的風行!而也希望透過這篇文章,幫助使用者瞭解它,學習它,使用它,最後能真正地喜歡它!
|