目錄
本參考適用於MyODBC 3.51。對於相應的版本,您可以找到舊的二進製版或原始碼版MyODBC手冊。
這是關於MySQL ODBC驅動程式的參考手冊,而不是通用ODBC參考。關於ODBC的更多訊息,請參閱http://www.microsoft.com/data/。
對於本參考的應用程式開發部分,假定用戶在C語言方面有著良好的實踐知識,對DBMS有一般瞭解,最後,還應熟悉MySQL。關於MySQL功能及其語法的更多訊息,請參閱http://dev.mysql.com/doc/。
如果您的問題未能在本文檔中得到解答,請發送電子郵件至myodbc@lists.mysql.com。
關於ODBC的更多訊息,請參閱http://www.microsoft.com/data/。
關於MyODBC的更多訊息,請訪問http://www.mysql.com/products/myodbc/。
關於授權的更多訊息,請訪問http://www.mysql.com/company/legal/licensing/。
· Windows 95, 98, Me, NT, 2000, XP和2003
· 所有Unix作業系統
o AIX
o Amiga
o BSDI
o DEC
o FreeBSD
o HP-UX 10, 11
o Linux
o Mac OS X Server
o Mac OS X
o NetBSD
o OpenBSD
o OS/2
o SGI Irix
o Solaris
o SunOS
o SCO OpenServer
o SCO UnixWare
o Tru64 Unix
對於特定平台,如果無法下載二進製版本,可通過下載驅動程式原始碼自行建立驅動程式。您也可以為MySQL貢獻二進制代碼,方式是發送郵件至myodbc@lists.mysql.com,這樣其他用戶就能使用您貢獻的內容。
關於訂閱MySQL郵件列資料表或瀏覽列資料表檔案的更多訊息,請訪問http://lists.mysql.com/。
其中,關注程度最高的是論壇MySQL連接器部分的ODBC論壇。
如果遇到與MyODBC有關的困難或問題,首先應使用ODBC管理器和MyODBC生成一份日誌檔案(請求來自ODBC ADMIN的日誌時獲得的日誌檔案)。關於完成該步驟的方式,請參見26.1.9.7節,「獲取ODBC跟蹤檔案」。
檢查MyODBC跟蹤檔案,找出可能出錯的地方。通過在myodbc.log檔案中搜索字串「>mysql_real_query」,可確定已執行的語句。
此外,您還應嘗試從mysql客戶端程式或admndemo執行語句。這樣,就能幫助您確定錯誤的出處,MyODBC或MySQL。
如果您發現了不正確的事項,請將相關行(最多40行)發送給MyODBC郵件列資料表。請參見1.7.1.1節,「MySQL郵件列資料表」。請勿發送整個MyODBC或ODBC日誌檔案!
如果您無法找出錯誤之所在,最後的選擇是,以tar或zip格式建立包含MyODBC跟蹤檔案、ODBC日誌檔案和README檔案(闡明問題)的檔案。您可以將該檔案檔案發送至ftp://ftp.mysql.com/pub/mysql/upload/。只有位於MySQL AB的我們才能訪問您上傳的檔案,而且我們會十分謹慎地對待這類數據。
如果您建立了仍出現問題的程式,請將該程式也包含在檔案檔案中。
如果程式能夠與某些其他SQL伺服器一起工作,檔案中還應包含在這類其他SQL伺服器下工作的ODBC日誌檔案。
請記住,您提供給我們的訊息越多,我們更正問題的機會就越大。
開放式資料庫連接性(ODBC)是廣泛接受的用於資料庫訪問的應用程式編程接口(API)。它基於針對資料庫API的CLI(使用層接口)規範(來自X/Open和ISO/IEC),並採用了結構化查詢語言(SQL)作為其資料庫訪問語言。
在26.1.16節,「MyODBC API引用」中,概要介紹了MyODBC支援的ODBC功能。關於ODBC的更多訊息,請參閱http://www.microsoft.com/data/。

· 應用程式:
應用程式指的是通過使用ODBC API來訪問MySQL伺服器上數據的程式。應用程式使用標準的ODBC使用與驅動管理器進行通信。應用程式不關心數據的儲存位置,儲存方式,甚至不關心為訪問數據而進行的系統配置方式。它僅需要知道數據源名(DSN)。
對於所有的應用程式,無論它們使用OBDC的方式是什麼,很多任務是共同的。這些任務包括:
o 選擇MySQL伺服器,並與之連接。
o 提交將要執行的SQL語句。
o 檢索結果(如果有的話)。
o 處理錯誤。
o 提交或回滾包含SQL語句的事務。
o 中斷與MySQL伺服器的連接。
由於大多數數據訪問工作是使用SQL完成,對於使用OBDC的應用程式來說,其主要任務是提交SQL語句,並檢索由這些語句生成的結果。
· 驅動管理器:
驅動管理器是用於管理應用程式和驅動程式間通信的庫。它負責執行下述任務:
o 解析數據源名(DSN)。
o 加載和卸載驅動程式。
o 處理ODBC使用,或將其傳遞給驅動程式。
· MyODBC驅動程式:
MyODBC驅動程式是用於實施ODBC API所提供功能的庫。它負責處理ODBC函數使用,將SQL請求提交給MySQL伺服器,並將結果返回給應用程式。如有必要,驅動程式會更改應用程式的請求,以便該請求符合MySQL支援的語法。
· ODBC.INI:
ODBC.INI是ODBC配置檔案,其中保存了連接到伺服器所需的驅動訊息和資料庫訊息。驅動管理器將使用它來確定加載哪個驅動程式(使用數據源名)。驅動程式將根據指定的DSN使用它來讀取連接參數。更多訊息,請參見26.1.9節,「MyODBC配置」。
· MySQL伺服器:
MySQL伺服器是數據源。MySQL是:
o 一種資料庫管理系統(DBMS)
o 一種關聯資料庫管理系統(RDBMS)
o 開放原始碼軟件
· 解析數據源名(DSN)。
· 加載和卸載驅動程式。
· 處理ODBC函數使用,或將其傳遞給驅動程式。
下面給出了一些常用的驅動程式:
· Microsoft Windows ODBC驅動管理器(odbc32.dll),http://www.microsoft.com/data/
· unixODBC Unix驅動管理器(libodbc.so),http://www.unixodbc.org。
· iODBC ODBC Unix驅動管理器(libiodbc.so),http://www.iodbc.org。
從2.1.2版開始,UnixODBC也提供MyODBC 3.51。
MyODBC能夠工作在Windows 9x, Me, NT, 2000, XP和2003,以及大多數Unix平台上。
MyODBC是開放原始碼軟件。您可以在網站http://dev.mysql.com/downloads/connector/odbc/上找到它的最新版本。請注意,2.50.x版採用的是LGPL授權,而3.51.x版採用的是GPL授權。
如果使用MyODBC時出現了問題,而且您的程式還能與OLEDB一起工作,應嘗試使用OLEDB驅動程式。
正常情況下,在Windows機器上僅需安裝MyODBC。僅當您擁有運行在Unix機器上的程式(如ColdFusion),而且該程式將使用ODBC來訪問資料庫時,才需安裝用於Unix的MyODBC。
如果您打算在Unix機器上安裝MyODBC,還需要1個ODBC管理器。MyODBC能夠與大多數Unix ODBC管理器一起工作。
· 要想使用ODBC應用程式(不支援MySQL的應用程式),建立從Windows平台到Unix平台的連接,首先必須在Windows機器上安裝MyODBC。
· 用戶和Windows機器必須具有訪問位於Unix機器上的MySQL伺服器的權限。這可通過GRANT命令設置。請參見13.5.1.3節,「GRANT和REVOKE語法」。
· 必須建立ODBC DSN條目,方式如下:
1. 打開Windows機器上的控制面板。
2. 雙擊ODBC數據源32位圖標。
3. 點擊選項卡「用戶DSN」。
4. 點擊「新增」按鈕。
5. 在「建立新數據源」屏幕上選擇MySQL,並點擊「完成」按鈕。
6. 顯示MySQL驅動程式的預設配置屏幕。請參見26.1.9.2節,「在Windows上配置MyODBC DSN」。
· 啟動應用程式,並使用在ODBC管理器中指定的DSN選擇ODBC驅動程式。
注意,在MySQL屏幕上還顯示了其他選項,如果遇到問題,可嘗試這些選項(如跟蹤、連接時不提示等)。
在Windows平台上,安裝較舊的MyODBC 2.50驅動時,可能會遇到下述錯誤:
拷貝C:\WINDOWS\SYSTEM\MFC30.DLL時出現錯誤。
重啟Windows,並再次安裝(在運行任何使用ODBC的應用程式之前)。
問題在於其他程式正使用ODBC。由於Windows的設計方式,在這種情況下,您可能無法使用Microsoft的ODBC設置程式安裝新的ODBC驅動。在大多數情況下,可以通過連續按「忽略」鍵拷貝剩餘的MyODBC檔案,最終安裝應仍能工作。如不然,解決方案是在「安全模式」下重新啟動計算機。在重啟的過程中,在機器啟動Windows前按F8,選擇「安全模式」,安裝MyODBC,然後在正常模式下重新啟動計算機。
要想使用RPM分發版在Linux平台上安裝或升級MyODBC,可簡單地下載最新MyODBC的RPM分發版,並按照下面介紹的方式操作。使用su root成為根用戶,然後安裝RPM檔案。
如果是首次安裝:
shell> su root
shell> rpm -ivh MyODBC-3.51.01.i386-1.rpm
如果驅動程式已存在,可按照下述方式升級它:
shell> su root
shell> rpm -Uvh MyODBC-3.51.01.i386-1.rpm
如果存在關於MySQL客戶端庫libmysqlclient的任何依存錯誤,可使用「-nodeps」選項簡單地忽略它,然後確保MySQL客戶端共享庫位於路徑中或通過LD_LIBRARY_PATH進行了設置。
這樣,就會將驅動程式庫和相關檔案分別安裝到/usr/local/lib和/usr/share/doc/MyODBC目錄下。請轉至26.1.9.3節,「在Unix平台上配置MyODBC DSN」。
要想卸載驅動程式,請首先成為根用戶,然後執行rpm命令:
shell> su root
shell> rpm -e MyODBC
要想從tarball分發版(.tar.gz檔案)安裝驅動程式,請下載針對您所使用作業系統的最新版驅動程式,然後按照下述步驟操作:
shell> su root
shell> gunzip MyODBC-3.51.01-i686-pc-linux.tar.gz
shell> tar xvf MyODBC-3.51.01-i686-pc-linux.tar
shell> cd MyODBC-3.51.01-i686-pc-linux
請閱讀INSTALL-BINARY檔案中的安裝說明,並執行下述命令:
shell> cp libmyodbc* /usr/local/lib
shell> cp odbc.ini /usr/local/etc
shell> export ODBCINI=/usr/local/etc/odbc.ini
然後,請跳至26.1.9.3節,「在Unix平台上配置MyODBC DSN」為MyODBC配置DSN。更多訊息,請參見與發佈版一起提供的INSTALL-BINARY檔案。
· MDAC, Microsoft Data Access SDK:http://www.microsoft.com/data/。
· MySQL客戶端庫以及MySQL 4.0.0或更高版本的包含檔案。(最好是MySQL 4.0.16或更高版本)。應滿足上述要求,這是因為MyODBC需要用到該版本以上的庫才提供的新使用和結構。要想獲得客戶端庫和包含檔案,請訪問http://dev.mysql.com/downloads/。
要想建立驅動程式,請採取下述步驟:
1. 下載並將原始碼展開到檔案夾,然後將位置切換到該檔案夾。在下述命令中,假定檔案夾為myodbc3-src:
2. C:\> cd myodbc3-src
3. 編輯Makefile,為MySQL客戶端庫和頭檔案指定正確的路徑。然後使用下述命令建立並安裝發佈版。
4. C:\> nmake -f Makefile
5. C:\> nmake -f Makefile install
nmake -f Makefile用於建立驅動程式的發佈版並將二進制碼放入名為Release的子目錄下。
nmake -f Makefile install用於將驅動程式DLL和庫(myodbc3.dll, myodbc3.lib)安裝(拷貝)到系統目錄下。
6. 要想建立調試版,請使用Makefile_Debug而不是Makefile,如下所示:
7. C:\> nmake -f Makefile_debug
8. C:\> nmake -f Makefile_debug install
9. 使用下述命令,可清除並重新建立驅動程式:
10. C:\> nmake -f Makefile clean
11. C:\> nmake -f Makefile install
註釋:
· 確保在Makefiles中指定了正確的MySQL客戶端庫和頭檔案路徑(設置MYSQL_LIB_PATH和MYSQL_INCLUDE_PATH變數)。預設的頭檔案路徑是C:\mysql\include。對於發佈版DLL,預設的庫路徑是C:\mysql\lib\opt,對於調試版,預設路徑是C:\mysql\lib\debug。
· 關於nmake的完整用法,請參見http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vcce4/html/evgrfRunningNMAKE.asp。
· 如果您正在使用BitKeeper樹來進行編譯,所有的針對Windows的Makefiles均將被命名為Win_Makefile*。
· MySQL客戶端庫以及MySQL 4.0.0或更高版本的包含檔案。(最好是MySQL 4.0.16或更高版本)。應滿足上述要求,這是因為MyODBC需要用到該版本以上的庫才提供的新使用和結構。要想獲得客戶端庫和包含檔案,請訪問http://dev.mysql.com/downloads/。
· 必須使用「--enable-thread-safe-client」選項配置MySQL庫。Libmysqlclient是作為共享庫安裝的。
· 必須安裝下述Unix ODBC驅動管理器之一:
o iodbc 3.0或更高版本(http://www.iodbc.org)
o unixodbc Alpha 3或更高版本(http://www.unixodbc.org)
· 如果使用了未編譯在MySQL客戶端庫中的字元編碼(預設字元編碼為: latin1 big5 czech euc_kr gb2312 gbk sjis tis620 ujis),就需要從字元編碼目錄下將mysql字元定義安裝到SHAREDIR中(預設情況下位於/usr/local/mysql/share/mysql/charsets)。如果在相同機器上安裝了MySQL,它們應位於恰當位置。
一旦完成了所有所需檔案的安裝,將原始碼檔案解包到單獨目錄下,並按照下面給出的說明進行操作。
shell> ./configure --help
下面介紹了一些常用的「configure」選項。
1. 要想編譯MyODBC,須使用「--with-mysql-path=DIR」選項來提供MySQL客戶端庫檔案和包含檔案路徑,其中,「DIR」是MySQL的安裝目錄。
可通過運行「DIR/bin/mysql_config」來確定MySQL編譯選項。
2. 為ODBC驅動管理器(iodbc或unixobc)提供標準的頭檔案和庫檔案路徑。
· 如果您正在使用iodbc,而且iodbc未安裝在其預設位置(/usr/local),可能需要使用「--with-iodbc=DIR」選項,其中,「DIR」是iodbc的安裝目錄。
如果iodbc頭檔案未位於DIR/include目錄下,可使用「--with-iodbc-includes=INCDIR」選項指定它們的位置。
上面所述也適用於庫檔案。如果庫檔案未位於DIR/lib目錄下,可使用「--with-iodbc-libs=LIBDIR」選項。
· 如果您正在使用unixODBC,可使用「--with-unixODBC=DIR」選項(區分大小寫),讓configure尋找unixODBC而不是預設的iodbc,其中,「DIR」是unixODBC的安裝目錄。
如果unixODBC頭檔案和庫檔案未位於目錄DIR/include和DIR/lib下,可使用「--with-unixODBC-includes=INCDIR」和「--with-unixODBC-libs=LIBDIR」選項。
3. 或許您也希望指定不同於「/usr/local」的安裝前綴。例如,要想將MyODBC驅動安裝到「/usr/local/odbc/lib」目錄下,可使用「--prefix=/usr/local/odbc」選項。
最終的配置命令應與下面給出的相似:
shell> ./configure --prefix=/usr/local \
--with-iodbc=/usr/local \
--with-mysql-path=/usr/local/mysql
--enable-thread-safe
也可以使用下述選項禁止它:
--disable-thread-safe
使用該選項,能夠通過mysql線程安全客戶端庫libmysqlclient_r.so(延伸名與作業系統有關)的連結,建立驅動程式線程安全庫libmyodbc3_r.so。
在配置線程安全選項時,如果出現了配置錯誤,應檢查config.log,檢查錯誤是否是因系統中缺少線程庫而導致的,如果是,使用LIBS選項提供一個,即
LIBS="-lpthread" ./configure ..
可以使用下述選項啟用或禁止共享和靜態選項:
--enable-shared[=yes/no] --disable-shared --enable-static[=yes/no] --disable-static
shell> make
如果出現錯誤,更正後,繼續執行建立程序。如果無法建立,請發送詳細的電子郵件至myodbc@lists.mysql.com,以獲取進一步幫助。
在大多數平台上,預設情況下,MySQL不會建立或支援「.so」(共享)客戶端庫,這是因為,建立共享庫在過去造成過很多問題。
在這種情況下,您可以下載MySQL分發版,並使用以下選項進行配置:
--without-server --enable-shared
要想建立共享驅動程式庫,必須為「configure」指定「--enable-shared」選項。預設情況下,「configure」不啟用該選項。
如果使用「--disable-shared」選項進行了配置操作,可使用下述命令,從靜態庫建立「.so」檔案。
shell> cd MyODBC-3.51.01
shell> make
shell> cd driver
shell> CC=/usr/bin/gcc \
$CC -bundle -flat_namespace -undefined error \
-o .libs/libmyodbc3-3.51.01.so \
catalog.o connect.o cursor.o dll.o error.o execute.o \
handle.o info.o misc.o myodbc3.o options.o prepare.o \
results.o transact.o utility.o \
-L/usr/local/mysql/lib/mysql/ \
-L/usr/local/iodbc/lib/ \
-lz -lc -lmysqlclient -liodbcinst
如果您正在使用unixODBC而不是iODBC,務必將「-liodbcinst」更改為「-lodbcinst」,並相應地配置庫路徑。
這樣,就建立了libmyodbc3-3.51.01.so檔案,並將其放在「.libs」目錄下。將該檔案拷貝到MyODBC庫目錄下(/usr/local/lib,或使用「--prefix」提供的安裝目錄下的「lib」目錄)。
shell> cd .libs
shell> cp libmyodbc3-3.51.01.so /usr/local/lib
shell> cd /usr/local/lib
shell> ln -s libmyodbc3-3.51.01.so libmyodbc3.so
要想建立線程安全驅動程式庫:
shell> CC=/usr/bin/gcc \
$CC -bundle -flat_namespace -undefined error
-o .libs/libmyodbc3_r-3.51.01.so
catalog.o connect.o cursor.o dll.o error.o execute.o
handle.o info.o misc.o myodbc3.o options.o prepare.o
results.o transact.o utility.o
-L/usr/local/mysql/lib/mysql/
-L/usr/local/iodbc/lib/
-lz -lc -lmysqlclient_r -liodbcinst
shell> make install
該命令將安裝下述庫集合之一:
對於MyODBC 3.51:
· libmyodbc3.so
· libmyodbc3-3.51.01.so,其中,3.51.01是驅動程式的版本
· libmyodbc3.a
對於線程安全MyODBC 3.51:
· libmyodbc3_r.so
· libmyodbc3-3_r.51.01.so
· libmyodbc3_r.a
對於MyODBC 2.5.0:
· libmyodbc.so
· libmyodbc-2.50.39.so,其中,2.50.39是驅動程式的版本
· libmyodbc.a
關於建立程序的更多訊息,請參閱與原始碼分發版一起提供的INSTALL檔案。注意,如果您試圖使用Sun的「make」,可能會以錯誤結束。從另一方面來說,GNU gmake在所有平台上均能良好工作。
shell> ./configure --prefix=/usr/local
--with-unixODBC=/usr/local
--with-mysql-path=/usr/local/mysql
--disable-shared
--enable-gui=no
--host=powerpc-apple
該命令假定unixODBC和MySQL均安裝在預設位置。如不然,請進行相應配置。
在 Mac OS X環境下,「--enable-shared」選項將預設建立「.dylib」檔案。您也可以採用下述方式建立「.so」檔案:
shell> make
shell> cd driver
shell> CC=/usr/bin/gcc \
$CC -bundle -flat_namespace -undefined error
-o .libs/libmyodbc3-3.51.01.so *.o
-L/usr/local/mysql/lib/
-L/usr/local/iodbc/lib
-liodbcinst -lmysqlclient -lz -lc
要想建立線程安全驅動程式庫:
shell> CC=/usr/bin/gcc \
$CC -bundle -flat_namespace -undefined error
-o .libs/libmyodbc3-3.51.01.so *.o
-L/usr/local/mysql/lib/
-L/usr/local/iodbc/lib
-liodbcinst -lmysqlclienti_r -lz -lc -lpthread
如果您正在使用unixODBC而不是iODBC,務必將「-liodbcinst」更改為「-lodbcinst」,並相應地配置庫路徑。
在Apple的GCC版本中,cc和gcc實際上均是gcc3的符號連結。
將該庫拷貝到$prefix/lib目錄下,並將symlink拷貝到libmyodbc3.so。
可以使用下述命令交叉檢驗輸出的共享庫屬性:
shell> otool -LD .libs/libmyodbc3-3.51.01.so
如果使用cc:
shell> CC="cc" \
CFLAGS="+z" \
LDFLAGS="-Wl,+b:-Wl,+s" \
./configure --prefix=/usr/local
--with-unixodbc=/usr/local
--with-mysql-path=/usr/local/mysql/lib/mysql
--enable-shared
--enable-thread-safe
如果使用gcc:
shell> CC="gcc" \
LDFLAGS="-Wl,+b:-Wl,+s" \
./configure --prefix=/usr/local
--with-unixodbc=/usr/local
--with-mysql-path=/usr/local/mysql
--enable-shared
--enable-thread-safe
一旦建立了驅動程式,使用「chatr .libs/libmyodbc3.sl」交叉檢查其屬性,查看是否需要使用SHLIB_PATH環境變數的MySQL客戶端庫。對於靜態版,忽略所有的共享庫選項,並使用「--disable-shared」選項運行「configure」。
要想在AIX環境下建立驅動程式,可使用下述configure示範:
shell> ./configure --prefix=/usr/local
--with-unixodbc=/usr/local
--with-mysql-path=/usr/local/mysql
--disable-shared
--enable-thread-safe
註釋: 關於在不同平台上建立和設置靜態和共享庫方式的更多訊息,請參見跨平台使用靜態和共享庫。註釋: 如果您對協助我們測試新的代碼感興趣,應閱讀本節的內容。
要想獲得我方的最新開發原始碼樹,請:
1. 參見2.8.3節,「從開發原始碼樹安裝」,關於如何下載和安裝BitKeeper的說明。
2. 安裝完BitKeeper後,首先進入打算在其中工作的目錄,然後,如果打算克隆MyODBC 3.51分支,請使用該命令:
3. shell> bk clone bk://mysql.bkbits.net/myodbc3 myodbc-3.51
在前面的示範中,原始碼樹是在myodbc-3.51/中設置的,或在當前目錄的myodbc3/子目錄下設置的(預設)。如果您位於防火牆後,而且僅能啟動HTTP連接,也可以通過HTTP使用BitKeeper。如果要求使用代理伺服器,可簡單地設置環境變數http_proxy,使之指向代理伺服器:
shell> export http_proxy="http://your.proxy.server:8080/"
執行克隆操作時,用http://替換bk://。例如:
shell> bk clone http://mysql.bkbits.net/myodbc3 myodbc-3.51
首次下載原始碼樹時需要一段時間,具體情況取決於連接速度,請耐心等候。
4. 要想運行下一組命令,需要GNU autoconf 2.52(或更新版本),automake 1.4,libtool 1.4,以及m4。
5. shell> cd myodbc-3.51
6. shell> bk -r edit
7. shell> aclocal; autoheader; autoconf; automake;
8. shell> ./configure # Add your favorite options here
9. shell> make
關於如何建立的更多訊息,請參閱位於相同目錄下的INSTALL檔案。在Windows平台下,建立驅動程式時,請使用Windows Makefiles WIN-Makefile和WIN-Makefile_debug,更多訊息,請參見26.1.6節,「在Windows平台上從原始碼版本安裝MyODBC」。
10.完成建立後,運行make install,將MyODBC 3.51驅動程式安裝到您的系統上。
11.如果進入了make階段,但並未編譯分發版本,請將其通報給myodbc@lists.mysql.com。
12.啟動了bk clone操作獲得原始碼樹後,應定期運行bk pull進行更新。
13.可以使用「bk sccstool」檢查樹的變更史。如果您發現了有趣的差異,並對代碼存在一問,請立刻發送電子郵件至myodbc@lists.mysql.com。
此外,如果您認為有更好的主意,請發送電子郵件至相同的地址並附上補丁。更改了原始碼後,使用「bk diffs」可生成補丁。如果您沒有時間就您的觀點編寫代碼,可發送描述性訊息。
14.BitKeeper具有一個可通過bk helptool訪問的幫助工具。
通過瀏覽http://mysql.bkbits.net:8080/myodbc3,也能線上瀏覽變化集、註釋和源代碼。
事實上,數據源就是數據的路徑。在不同的情況下,它可能有著不同的內容,但是在典型情況下,它指明了正在運行的MySQL伺服器(例如,通過網絡地址或伺服器名),連接時該伺服器的預設資料庫,以及必要的連接訊息(如端口)。MySQL驅動程式(以及Windows系統上的ODBC驅動管理器)將使用數據源進行連接。對於該目的,名為Microsoft ODBC數據源管理器的管理工具可能十分有用。
有兩處可能保存初始化訊息的位置: Windows註冊資料表(Windows系統),或DSN檔案(任何系統)。
如果訊息位於Windows註冊資料表中,它稱為「機器數據源」。它可以是「用戶數據源」,在這種情況下,只有一位用戶能看到它。它也可以是「系統數據源」,在這種情況下,計算機上的所有用戶均能訪問它,如果用戶是通過Microsoft Windows NT服務連接在一起的話,與該計算機相連的所有用戶均能訪問它。運行ODBC數據管理程式時,可以選擇是否使用「用戶」或「系統」,它們位於不同的選項卡上。
如果訊息位於DSN檔案中,它稱為「檔案數據源」。這是一種文本檔案。其優點在於: (a)它適合於任何類型的計算機,而不僅僅是使用Windows作業系統的計算機;(b)其內容的拷貝或傳輸相對容易。
要想在Windows平台上新增和配置新的MyODBC數據源,請使用ODBC數據源管理器。ODBC管理器能夠更新數據源連接訊息。新增了數據源時,ODBC管理器能夠更新註冊訊息。
要想從控制面板打開ODBC管理器:
1. 點擊「開始」,將指針指向「設置」,然後點擊「控制面板」。
2. 在運行Microsoft Windows 2000或更新版本的計算機上,雙擊「管理工具」,然後雙擊「數據源」(ODBC)。在運行舊版本Windows的計算機上,雙擊32位ODBC或ODBC。
![]()
打開ODBC數據源管理器對話框,如下圖所示:

點擊「幫助」以瞭解ODBC數據源管理器對話框各選項卡的詳細訊息。
要想在Windows平台上新增數據源:
1. 打開ODBC數據源管理器。
2. 在ODBC數據源管理器對話框中,點擊「新增」。打開「建立新數據源」對話框。
3. 選擇MySQL ODBC 3.51驅動程式,然後點擊「完成」。打開「MySQL ODBC 3.51驅動程式-DSN配置」對話框,如下圖所示:

4. 在「數據源名」框中,輸入打算訪問的數據源的名稱。它可以是您選擇的任何有效名稱。
5. 在「描述」框中,輸入DSn所需的描述訊息。
6. 在「主機」或「伺服器名」(或IP)框中,輸入準備訪問的MySQL伺服器主機的名稱。預設情況下為localhost(本地主機)。
7. 在「資料庫名」框中,輸入準備用作預設資料庫的MySQL資料庫名稱。
8. 在「用戶」框中,輸入您的MySQL帳號(資料庫用戶ID)。
9. 在「密碼」框中輸入密碼。
10.在「端口」框中,如果端口不是預設端口,輸入端口號。
11.在「SQL命令」框中,可輸入建立連接後自動執行的SQL語句。
最後,對話框與下圖顯示的類似:

點擊「OK」新增該數據源。
註釋: 點擊「OK」後,將打開「數據源」對話框,ODBC管理器將更新註冊訊息。連接到該數據源時,您所輸入的帳號和連接字串將成為該數據源的預設連接值。
您也可以使用「測試數據源」按鈕,測試您的設置是否適合於連接到伺服器。該特性僅對MyODBC 3.51驅動程式有效。成功完成測試後,將顯示下述窗口:

如果測試失敗,將顯示錯誤消息。

DNS配置對話框也有一個「選項」按鈕。如果選擇了它,將打開下述選項對話框,顯示控制驅動程式的行為。關於這些選項的含義,請參見26.1.9.4節,「連接參數」。

註釋: 在「驅動程式跟蹤」選項下列出的選項已被禁止(灰色),除非您使用的是驅動DLL的調試版本。
要想在Windows平台上更改數據源:
1. 打開ODBC數據源管理器。點擊恰當的選項卡「DSN」。
2. 選擇打算更改的MySQL數據源,然後點擊「配置」。打開「MySQL ODBC 3.51驅動程式-DSN配置」對話框。
3. 更改適用的數據源字段,然後點擊「OK」。
更改完該對話框中的訊息後,ODBC管理器將更新註冊訊息。
在Unix平台上,可以直接在odbc.ini檔案中配置DSN條目。這裡給出了1個典型的odbc.ini檔案,在該檔案中,分別將myodbc和myodbc3配置為MyODBC 2.50和MyODBC 3.51的DSN名稱:
;
; odbc.ini對MyODBC和MyODBC 3.51驅動程式的配置
; [ODBC Data Sources] myodbc = MyODBC 2.50 Driver DSN myodbc3 = MyODBC 3.51 Driver DSN [myodbc] Driver = /usr/local/lib/libmyodbc.so Description = MyODBC 2.50 Driver DSN SERVER = localhost PORT = USER = root Password = Database = test OPTION = 3 SOCKET = [myodbc3] Driver = /usr/local/lib/libmyodbc3.so Description = MyODBC 3.51 Driver DSN SERVER = localhost PORT = USER = root Password = Database = test OPTION = 3 SOCKET = [Default] Driver = /usr/local/lib/libmyodbc3.so Description = MyODBC 3.51 Driver DSN SERVER = localhost PORT = USER = root Password = Database = test OPTION = 3 SOCKET =
關於可提供連接參數的清單,請參見26.1.9.4節,「連接參數」。
註釋: 如果您正在使用unixODBC,可使用下述工具設置DSN:
· ODBCConfig GUI tool(HOWTO: ODBCConfig)
· odbcinst
在某些情況下使用unixODBC,可能會出現下述錯誤:
Data source name not found and no default driver specified(數據源名不存在,未指定預設驅動程式)
如果出現該情況,請確認ODBCINI和ODBCSYSINI環境變數指向正確的odbc.ini檔案。例如,如果您的odbc.ini檔案位於目錄「/usr/local/etc」下,可將環境變數設為:
export ODBCINI=/usr/local/etc/odbc.ini
export ODBCSYSINI=/usr/local/etc
您可以在ODBC.INI檔案的[Data Source Name](數據源名)部分、或通過SQLDriverConnect() call的InConnectionString參量為MyODBC指定下述參數。
|
參數 |
預設值 |
註釋 |
|
user |
ODBC (on Windows) |
用於連結至MySQL的帳號。 |
|
server |
localhost |
MySQL伺服器的主機名。 |
|
database |
|
預設資料庫。 |
|
option |
0 |
指定MyODBC工作方式的選項。參見下面。 |
|
port |
3306 |
如果伺服器不是本地主機將要使用的TCP/IP端口。 |
|
stmt |
|
連接至MySQL時將要執行的語句。 |
|
password |
|
伺服器上用戶帳號的密碼。 |
|
socket |
|
當伺服器是本地主機是將要連接的Unix套接字檔案或Windows命名管道。 |
選項參量用於通知MyODBC:客戶端不是100% ODBC兼容的。在Windows平台下,正常情況下,應通過切換連接屏幕上的復選框選擇選項,但也能在選項參量中選擇它們。下述選項是按照它們在MyODBC連接屏幕上顯示的順序排列的:
|
值 |
描述 |
|
1 |
客戶端無法處理,MyODBC返回列的實際寬度。 |
|
2 |
客戶端無法處理,MyODBC返回受影響行的真值。如果設置了該標誌,MySQL將返回「發現的行」取而代之。MySQL的版本必須是3.21.14或更高版本,該功能才能生效。 |
|
4 |
在c:\myodbc.log中生成調試日誌。它與將MYSQL_DEBUG=d:t:O,c::\myodbc.log放到AUTOEXEC.BAT中的效果相同(在Unix平台下,該檔案是/tmp/myodbc.log)。 |
|
8 |
不為結果和參數設置任何訊息報限制。 |
|
16 |
即使驅動程式可能會給出提示,對出現的問題不予提示。 |
|
32 |
允許或禁止動態光標支援。(在MyODBC 2.50中不允許)。 |
|
64 |
在db_name.tbl_name.col_name中忽略資料庫名的使用。 |
|
128 |
強制使用ODBC管理器光標(實驗性)。 |
|
256 |
禁止使用延伸取數據(實驗性)。 |
|
512 |
將CHAR列填充為全列寬。 |
|
1024 |
SQLDescribeCol()返回完全合格的列名。 |
|
2048 |
使用壓縮客戶端/伺服器協議。 |
|
4096 |
通知伺服器忽略函數名之後和「(」之前的空格(PowerBuilder要求這樣)。這會使所有的函數名成為關鍵字。 |
|
8192 |
用命名管道連結至運行在NT環境下的mysqld伺服器。 |
|
16384 |
將LONGLONG列更改為INT列(某些應用程式不能處理LONGLONG列)。 |
|
32768 |
從SQLTables返回作為Table_qualifier和Table_owner的用戶(實驗性)。 |
|
65536 |
從my.cnf的[client]和[odbc]組讀取參數。 |
|
131072 |
增加一些額外檢查(不應需要之,但…)。 |
|
262144 |
禁止事務。 |
|
524288 |
允許將查詢記錄到c:\myodbc.sql(/tmp/myodbc.sql)檔案。(僅在調試模式下才能啟用)。 |
|
1048576 |
不要驅動中的結果進行緩衝處理,而應從伺服器讀取「mysql_use_result()」。僅對正向光標才能起作用。當您不希望緩衝處理整個結果集時,對於大資料表處理,該選項十分重要。 |
|
2097152 |
強制使用正向光標類型。在應用程式設置了預設靜態/動態光標類型的情況下,如果希望驅動程式使用非緩衝結果集,那麼該選項能夠保證正向光標的行為。 |
要想選擇多個選項,可將它們的值加在一起。例如,將選項設置為12(4+8),就能獲得調試功能,但沒有訊息包限制。
預設的myodbc3.dll是為最佳化性能而編譯的。如果希望調試MyODBC 3.51(例如,啟用跟蹤功能),應使用myodbc3d.dll。要想安裝該檔案,請拷貝myodbc3d.dll,使之覆蓋已安裝的myodbc3.dll檔案。一旦完成了調試操作,務必恢復至驅動DLL的發佈版本,這是因為調試版本可能會導致性能問題。注意,在MyODBC 3.51.07至3.51.11中未包含myodbc3d.dll。如果您正在使用這些版本中的一個,應從之前的版本(例如3.51.06)拷貝該DLL檔案。
對於MyODBC 2.50,採用了myodbc.dll和myodbcd.dll取而代之。
在下面的資料表各中,給出了針對各種配置的推薦選項值:
|
配置 |
選項值 |
|
Microsoft Access |
3 |
|
Microsoft Visual Basic |
3 |
|
具有很多行的大資料表 |
2049 |
|
驅動跟蹤生成(調試模式) |
4 |
|
查詢日誌生成(調試模式) |
524288 |
|
生成驅動跟蹤和查詢日誌(調試模式) |
524292 |
|
具有非緩衝結果的大資料表 |
3145731 |
是。通過指定DRIVER名稱字段,可使用SQLDriverConnect連接到MySQL伺服器。下面給出了使用DSN-Less連接的MyODBC連接字串:
對於MyODBC 2.50:
ConnectionString = "DRIVER={MySQL};\
SERVER=localhost;\
DATABASE=test;\
USER=venu;\
PASSWORD=venu;\
OPTION=3;"
對於MyODBC 3.51:
ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};\
SERVER=localhost;\
DATABASE=test;\
USER=venu;\
PASSWORD=venu;\
OPTION=3;"
如果您使用的編程語言會將後跟空格的反斜槓轉換為空格,最好將連接字串指定為單個長字串,或使用不會在其中新增空格的多個字串串接。例如:
ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};"
"SERVER=localhost;"
"DATABASE=test;"
"USER=venu;"
"PASSWORD=venu;"
"OPTION=3;"
關於可提供連接參數的清單,請參見26.1.9.4節,「連接參數」。
如果您打算使用myuser和mypassword作為帳號和密碼從系統B連接到系統A,可參考下面給出的簡單步驟。
在系統A上,執行下述步驟:
1. 啟動MySQL伺服器。
2. 使用GRANT建立帳號為myuser的帳號,該帳號可使用密碼myuser從系統B建立連接。
3. GRANT ALL ON *.* to 'myuser'@'B' IDENTIFIED BY 'mypassword';
4. GRANT語句為用戶myuser授予了使用密碼mypassword從系統B進行連接的所有權限。要想執行該語句,必須在系統A上擁有根用戶權限,或是具有恰當權限的另一用戶。關於MySQL權限的更多訊息,請參見5.8節,「MySQL用戶帳號管理」。
在系統B上,執行下述步驟:
1. 使用下述連接參數配置MyODBC DSN:
2. DSN = remote_test
3. SERVER or HOST = A (or IP address of system A)
4. DATABASE = test (The default database or an appropriate one)
5. USER = myuser
6. PASSWORD = mypassword
關於建立DSN-less連接的更多訊息,請參見26.1.9.5節,「沒有預定義DSN下的連接」。
7. 使用Ping命令或其它方式檢查是否能從系統B訪問系統A。如果無法訪問系統A,請檢查網絡或Internet連接,或與您的系統管理員聯繫。
8. 嘗試使用DSN=remote_test進行連接。如果失敗,請跟蹤查詢MyODBC日誌,並根據日誌給出的錯誤訊息採取進一步的步驟。如果需要進一步幫助,請發送詳細的電子郵件至myodbc@lists.mysql.com。
在下述站點,您可以找到關於如何完成該操作的簡單示範:http://www.phphelp.com/tutorial/using-myodbc-to-connect-to-a-remote-database.html.
如果遇到與MyODBC有關的困難或問題,首先應使用ODBC管理器和MyODBC生成一份日誌檔案(請求來自ODBC ADMIN的日誌時獲得的日誌檔案)。
要想通過驅動管理器獲得ODBC跟蹤檔案,可採取下述步驟:
· 打開ODBC數據源管理器:
1. 點擊「開始」,將指針指向「設置」,然後點擊「控制面板」。
2. 在運行Microsoft Windows 2000、XP或2003的計算機上,雙擊「管理工具」,然後雙擊「數據源」(ODBC),如下圖所示。
![]()
在運行早期Microsoft Windows版本的計算機上,雙擊「控制面板」中的32位ODBC或ODBC。
3. 打開ODBC數據源管理器對話框,如下圖所示:

4. 點擊「幫助」以瞭解ODBC數據源管理器對話框各選項卡的詳細訊息。
· 啟用跟蹤選項 對於Windows和Unix平台,該步驟不同。
要想在Windows平台上啟用跟蹤選項:
1. 通過「ODBC數據源管理器」對話框的「跟蹤」選項卡,可對跟蹤ODBC函數的方式進行配置。
2. 從「跟蹤」選項卡激活了跟蹤功能後,驅動管理器會對後續運行的所有應用程式的ODBC函數使用進行跟蹤。
3. 激活跟蹤功能前所運行應用程式的ODBC函數使用不會被記錄。ODBC函數使用將被記錄在您指定的日誌檔案中。
4. 點擊「現在停止跟蹤」後,跟蹤功能將停止。請記住,啟動跟蹤功能後,日誌檔案將不斷增大,而且跟蹤功能會影響所有ODBC應用程式的性能。

要想在Unix平台上啟用跟蹤選項:
5. 在Unix平台上,需要在ODBC.INI檔案中明確設置跟蹤選項。
使用TraceFile和odbc.ini中的Trace(跟蹤)參數打開或關閉跟蹤功能,如下所示:
TraceFile = /tmp/odbc.trace
Trace = 1
TraceFile指明了跟蹤檔案的名稱和完整路徑,將Trace(跟蹤)設為ON或OFF。也可以使用「1」或「Yes」資料表示ON,以及「0」或「No」資料表示OFF。如果正在使用unixODBC的ODBCConfig,然後遵照HOWTO-ODBCConfig中介紹的關於跟蹤unixODBC使用的指示說明。
要想生成MyODBC日誌,可採取下述步驟:
6. 確保您所使用的是驅動程式調試DLL(對於MyODBC 3.51,它是myodbc3d.dll而不是myodbc3.dll,對於MyODBC 2.50,它是myodbcd.dll)。
最簡單的方法是從MyODBC 3.51分發版找到myodbc3d.dll(或myodbcd.dll),並用其覆蓋myodbc3.dll(或myodbc.dll),該檔案通常位於C:\windows\system32或C:\winnt\system32目錄下。注意,完成測試後,您或許希望恢復舊的myodbc.dll檔案,這是因為它比myodbc3d.dll(或myodbcd.dll)快很多,因此,請保存原始DLL的備份。
7. 在「MyODBC連接/配置」屏幕上啟用「跟蹤MyODBC」選項。日誌將被寫入檔案C:\myodbc.log。當您返回上述屏幕時,如果您設置的跟蹤選項未被記住,表明您正在使用的是myodbcd.dll驅動(參見前面的介紹)。在Linux平台上,或您使用的是DSN-Less連接,需在連接字串中提供「OPTION=4」。
8. 啟動應用程式,並嘗試著使其出現問題。然後檢查MyODBC跟蹤檔案,找出可能出錯的地方。
如果發現某些事項出錯,請發送電子郵件至myodbc@lists.mysql.com(或support@mysql.com,如果有與MySQL AB簽訂的支援合同),簡要描述出現的問題,並提供下述額外訊息:
o MyODBC版本
o ODBC驅動管理器的類型和版本
o MySQL伺服器的版本
o 驅動管理器的ODBC跟蹤
o 來自MyODBC驅動的MyODBC日誌檔案
o 簡單的可複製示範
請記住,您提供給我們的訊息越多,我們更正問題的機會就越大。
此外,在提供問題訊息前,請檢查MyODBC郵件列資料表(http://lists.mysql.com/)。
使用下述應用程式測試了MyODBC:
MS Access 95, 97, 2000, and 2002
C++-Builder, Borland Builder 4
Centura Team Developer (formerly Gupta SQL/Windows)
ColdFusion (on Solaris and NT with service pack 5), How-to: MySQL and Coldfusion. Troubleshooting Data Sources and Database Connectivity for UnixPlatforms.
Crystal Reports
DataJunction
Delphi
ERwin
MS Excel
iHTML
FileMaker Pro
FoxPro
Notes 4.5/4.6
MS Visio Enterprise 2000
Vision
Visual Objects
Visual Interdev
SBSS
Perl DBD-ODBC
Paradox
Powerbuilder
Powerdesigner 32-bit
MS Visual C++
Visual Basic
ODBC.NET through CSharp(C#), VB and C++
Data Architect(http://thekompany.com/products/dataarchitect/)
SQLExpress for Xbase++(http://www.SQLExpress.net)
Open Office (http://www.openoffice.org) How-to: MySQL + OpenOffice. How-to: OpenOffice + MyODBC + unixODBC.
Star Office (http://wwws.sun.com/software/star/staroffice/6.0/index.html)
G2-ODBC bridge (http://www.gensym.com)
Sambar Server (http://www.sambarserver.info) How-to: MyODBC + SambarServer + MySQL.
如果您知道能夠與MyODBC一起工作的其他應用程式,請以電子郵件的方式指明它:myodbc@lists.mysql.com。
大多數程式均能與MyODBC一起工作,對上面所列的每一程式,我們自己進行了測試,或得到用戶的確認。很多介紹中均給出了您可能會遇到問題的描述。
· 程式
註釋
要想使Access工作:
o 如果您正在使用Access 2000,應從下述地址獲取並安裝最新的(2.6版或更高)Microsoft MDAC(Microsoft數據訪問組件),http://www.microsoft.com/data/。它更正了Access在將數據導出至MySQL時存在的一個問題,未指定資料表名和列名。另一種解決該問題的方法是,升級到MyODBC 2.50.33和MySQL 3.23.x, 它們共同提供了避免該問題的一種方式。
此外,您還應獲取並應用Microsoft Jet 4.0 Service Pack 5 (SP5),可在下述地址找到它:http://support.microsoft.com/default.aspx?scid=kb;EN-US;q239114。它修正了某些情況下在Access中列被標注為「#DELETED#」的問題。
註釋: 如果您正使用MySQL 3.22,必須安裝MDAC補丁,並使用MyODBC 2.50.32或2.50.34或更高版本以解決該問題。
o 對於所有版本的Access,應啟用「MyODBC返回匹配行」選項。對於Access 2.0,還應額外啟用「模擬ODBC 1.0」選項。
o 在希望能夠更新的所有資料表中,均應有時間戳。為了獲得最大的可移植性,在列聲明中不要使用長度規範。也就是說,應使用TIMESTAMP,而不是TIMESTAMP(n), n < 14。
o 在資料表中應有1個主鍵。如不然,新的或更新的行可能會顯示為「#DELETED#」。
o 僅應使用DOUBLE浮點字段。與單精度浮點進行比較時,Access將失敗。其徵兆是新的或更新的行可能會顯示為「#DELETED#」,或無法找到或更新行。
o 如果您正使用MyODBC來連結到有BIGINT列的資料表,結果會顯示為「#DELETED」。排除它的解決方案是:
§ 有1個以TIMESTAMP作為數據類型的虛擬列。
§ 在「ODBC DSN管理器」的連接對話框中選擇「將BIGINT列更改為INT」選項。
§ 刪除與Access的資料表連結,並重新建立它。
舊記錄仍將顯示為「#DELETED#」,但新增/更新的記錄會恰當顯示。
o 新增了TIMESTAMP列後,另一位用戶更改了數據,如果錯誤依舊出現,下述技巧或許有所幫助:
不要使用資料表數據資料表視圖。取而代之的是,從您希望使用的資料表建立一個資料表單,並使用資料表單數據資料表視圖。應將TIMESTAM列的DefaultValue屬性設置為NOW()。在視圖中隱藏TIMESTAMP列或許是個好主意,這樣就不會使您的用戶感到迷惑。
o 在某些情況下,Access可能會生成MySQL無法理解的SQL語句。可通過在Access菜單中選擇「Query|SQLSpecific|Pass-Through」來更正該問題。
o 在NT平台上,Access會將BLOB列通報為OLE OBJECTS(OLE對像)。如果您打算用MEMO列取而代之,應使用ALTER TABLE將BLOB列更改為TEXT。
o Access無法在任何時候均恰當處理DATE列。如果遇到這類問題,請將列更改為DATETIME。
o 如果在Access中存在定義為BYTE的列,Access會視圖將其導出為TINYINT而不是TINYINT UNSIGNED。如果列中的值大於127,將出現問題。
使用ADO API和MyODBC進行編碼時,需要注意某些不被MySQL伺服器支援的預設屬性。例如,對於RecordCount屬性,如果將CursorLocation屬性用作adUseServer,將返回結果「-1」。要想獲得正確的值,需要將該屬性設置為adUseClient,如下面給出的VB代碼示範所示:
Dim myconn As New ADODB.Connection
Dim myrs As New Recordset
Dim mySQL As String
Dim myrows As Long
myconn.Open "DSN=MyODBCsample"
mySQL = "SELECT * from user"
myrs.Source = mySQL
Set myrs.ActiveConnection = myconn
myrs.CursorLocation = adUseClient
myrs.Open
myrows = myrs.RecordCount
myrs.Close
myconn.Close
另一種處理方式是,對類似查詢使用SELECT COUNT(*)語句以獲取正確的行計數。
· 主動伺服器頁(ASP)
應選擇「返回匹配行」選項。
· BDE應用程式
要想使這類應用程式工作,應選擇「不最佳化列寬度並返回匹配行」選項。
開始查詢時,可使用Active屬性或Open方法。注意,Active將通過自動發出「SELECT * FROM ...」查詢開始。如果資料表很大,這不是什麼好事。
下述訊息取自ColdFusion文檔:
使用下述訊息來配置用於Linux的ColdFusion伺服器,以便使用針對MySQL數據源的unixODBC驅動和MyODBC。Allaire已證明,MyODBC 2.50.26能夠與MySQL 3.22.27以及用於Linux的ColdFusion一起工作。(任何較新的版本也應能正確工作)。您可以在網站http://dev.mysql.com/downloads/connector/odbc/上下載MyODBC。
通過ColdFusion 4.5.1版,可以使用「ColdFusion管理器」來新增MySQL數據源。但是,驅動程式未包含在ColdFusion 4.5.1版中。在MySQL驅動程式出現在ODBC數據源下拉列資料表之前,必須建立MyODBC驅動程式,並將其拷貝到/opt/coldfusion/lib/libmyodbc.so。
在Contrib目錄下包含程式mydsn-xxx.zip,使用它,對於Coldfusion應用程式,可建立並刪除用於MyODBC驅動的DSN註冊檔案。
應對其進行更改,使之輸出VARCHAR而不是ENUM,因為其導出ENUM的方式會造成MySQL問題。
工作。一些提示:
o 如果遇到日期方面的問題,請使用CONCAT()函數,將其選擇為字串。例如:
o SELECT CONCAT(rise_time), CONCAT(set_time)
o FROM sunrise_sunset;
採用該方式以字串提取的值應能被Excel97正確識別為時間值。
在本例中,CONCAT()的目的是讓ODBC認為列是「字串類型」。如果沒有CONCAT(),ODBC會將列視為時間類型,Excel無法理解它。
注意,Excel存在1個問題,這是因為它會自動將字串轉換為時間。如果源是文本檔案,不存在問題,但當源是通報各列準確類型的ODBC連接時,將出現問題。
要想將數據從MySQL提取到Word/Excel文檔,需要使用MyODBC驅動程式以及「Microsoft查詢幫助」插件。
例如,用含有兩列文本的資料表建立1個資料庫:
o 使用mysql客戶端命令行工具插入行。
o 使用ODBC管理器建立1個DSN檔案,例如,針對剛建立資料庫的「my」。
o 打開Word應用程式。
o 建立1個新的空白文檔。
o 在資料庫工具欄上,按「插入資料庫」按鈕。
o 按「獲取數據」按鈕。
o 在「獲取數據」屏幕右側,按「Ms Query」按鈕。
o 在「Ms Query」中使用「my DSN」檔案建立1個新數據源。
o 選擇新查詢。
o 選擇打算使用的列。
o 如果願意,建立1個過濾器。
o 如果願意,建立1個分類。
o 選擇「將數據返回到Microsoft Word」。
o 點擊「完成」。
o 點擊「插入數據」並選擇記錄。
o 點擊OK,在您的Word文檔中將看到插入的行。
ODBC的測試程式。
必須使用BDE 3.2版或更新的版本。連接到MySQL時,選擇「不最佳化列寬度」選項。
此外,這裡給出了一些可能有用的Delphi代碼,這些代碼可設置為MyODBC設置ODBC條目和BDE條目。BDE條目要求用到「BDE別名編輯器」,它位於靠近您的「Delphi Super Page」上,可自由拖動。(下述內容由Bryan Brunton <bryan@flesherfab.com>提供):
fReg:= TRegistry.Create;
fReg.OpenKey('\Software\ODBC\ODBC.INI\DocumentsFab', True);
fReg.WriteString('Database', 'Documents');
fReg.WriteString('Description', ' ');
fReg.WriteString('Driver', 'C:\WINNT\System32\myodbc.dll');
fReg.WriteString('Flag', '1');
fReg.WriteString('Password', '');
fReg.WriteString('Port', ' ');
fReg.WriteString('Server', 'xmark');
fReg.WriteString('User', 'winuser');
fReg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True);
fReg.WriteString('DocumentsFab', 'MySQL');
fReg.CloseKey;
fReg.Free;
Memo1.Lines.Add('DATABASE NAME=');
Memo1.Lines.Add('USER NAME=');
Memo1.Lines.Add('ODBC DSN=DocumentsFab');
Memo1.Lines.Add('OPEN MODE=READ/WRITE');
Memo1.Lines.Add('BATCH COUNT=200');
Memo1.Lines.Add('LANGDRIVER=');
Memo1.Lines.Add('MAX ROWS=-1');
Memo1.Lines.Add('SCHEMA CACHE DIR=');
Memo1.Lines.Add('SCHEMA CACHE SIZE=8');
Memo1.Lines.Add('SCHEMA CACHE TIME=-1');
Memo1.Lines.Add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT');
Memo1.Lines.Add('SQLQRYMODE=');
Memo1.Lines.Add('ENABLE SCHEMA CACHE=FALSE');
Memo1.Lines.Add('ENABLE BCD=FALSE');
Memo1.Lines.Add('ROWSET SIZE=20');
Memo1.Lines.Add('BLOBS TO CACHE=64');
Memo1.Lines.Add('BLOB SIZE=32');
AliasEditor.Add('DocumentsFab','MySQL',Memo1.Lines);
用BDE 3.0版進行了測試。目前已知的唯一問題是,更改資料表方案時,查詢字段不更新。然而,BDE看上去不會識別主鍵,它僅是名為PRIMARY的索引,儘管這談不上是問題。
· Vision
應選擇「返回匹配行」選項。
要想更新資料表,必須為資料表定義主鍵。
帶有ADO的Visual Basic不能處理大整數。這意味著某些查詢(如SHOW PROCESSLIST等)不會正確工作。更正方法是,在ODBC連接字串中使用OPTION=16384,或在MyODBC連接屏幕上選擇「將BIGINT列更改為INT」選項。或許,您也希望選擇「返回匹配行」選項。
· VisualInterDev
如果在結果中有BIGINT,可能會出現錯誤「[Microsoft][ODBC Driver Manager]驅動程式不支持該參數」。請在MyODBC連接屏幕上選擇「將BIGINT列更改為INT」選項。
· Visual Objects
應選擇「不最佳化列寬度」選項。
· MS Visio Enterprise 2000
通過MyODBC(2.50.37或更高版本),通過連接MS Vision Enterprise 2000和MySQL,並使用Visio的逆向工程師功能,我們建立了資料庫模型,使用它來檢索關於DB的訊息(Visio顯示了所有的列定義、主鍵、索引等)。此外,我們還通過指定Visio中的新資料表進行了測試,並通過MyODBC將其導出至MySQL。