程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 如何讓MySQL與OpenOffice結合使用(3)

如何讓MySQL與OpenOffice結合使用(3)

編輯:關於MYSQL數據庫
   一年前,我成為了Linux用戶的一員,但是多年使用Windows,讓我覺得Linux有的工具使用不很習慣。就拿數據庫來說,在Windows下,開發一些數據庫驅動的網站或者小型管理系統時可以選擇使用Access。Access不僅易於使用,而且非常方便。轉到Linux上後,做同樣事情時發現MySQL是一個不錯的選擇,但其沒有圖形界面,使用起來不是很方便,於是希望能夠找到解決的方案。經過一段時間的探尋,終於找到了解決辦法,即把MySQL和OpenOffice結合使用。根據資料顯示,實現MySQL和OpenOffice協同工作的方法有很多種,不過大都過於復雜,難於實現。在此我介紹兩種安裝和配置過程。

  我使用的操作系統是Red Hat 8.0,同樣的方法用於其它的發行版可能稍有不同。在安裝配置過程中,需要MySQL和unixODBC軟件包(OpenOffice缺省情況下已經安裝好了)。這些軟件包在Red Hat 8.0的光盤中都已經自帶,但在我的測試中,使用安裝盤的方法似乎無法成功。

  安裝配置方法一



  1.下載軟件

  所需要的軟件包有:

MySQL-3.23.55-pc-Linux-i686.tar
MySQL-clIEnt-3.23.55-1.i386
MySQL-shared-3.23.55-1.i386
MyODBC-2.50.39-1.i386
unixODBC-2.2.4.tar


  這些軟件包可分別可從以下站點下載:

http://mirrors.sunsite.dk/MySQL/Downloads/MySQL-3.23/
http://MySQL.azc.uam.mx/Downloads/MyODBC/
http://www.unixodbc.org


  上面所列的是我感覺速度比較快的站點,事實上在很多鏡像站點都可以下載到這些軟件包。

  2.安裝軟件

  使用以下命令(以root身份)來查看以前是否安裝過:

rpm -qa | grep -i MySQL
rpm -e (發現的所有軟件包) 
updatedb
rpm -qa | grep -i odbc
rpm -e (所有發現的軟件包)


  切換至下載的軟件包所在的目錄,以root用戶的身份執行以下命令:

$cd /usr/local
$tar xzf MySQL-3.23.55-pc-Linux-i686.tar.gz
$ln -s MySQL.3.23.55-pc MySQL 
$cd MySQL
$scripts/MySQL_install_db
$chown -R root .
$chown -R MySQL data
$chgrp -R MySQL .
$bin/safe_MySQLd --user=MySQL &


  下面運行一個MySQL會話:

$./MySQL -utest
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 1 to server version: 3.23.55
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.


  這說明MySQL已經成功安裝,現在輸入:

MySQL> select version();
+-----------+
| version() |
+-----------+
| 3.23.55   |
+-----------+
1 row in set (0.01 sec)


  使用命令“\s”來查看一些基本信息:

MySQL> \s
--------------
./MySQL  Ver 11.18 Distrib 3.23.55, for pc-Linux (i686)

Connection id:          4
Current database:
Current user:           test@localhost
Current pager:          stdout
Using outfile:          ''
Server version:         3.23.55
Protocol version:       10
Connection:             Localhost via UNIX socket
ClIEnt characterset:    latin1
Server characterset:    latin1
UNIX socket:            /tmp/MySQL.sock
Uptime:                 6 min 57 sec
Threads: 1  Questions: 6  Slow queries: 0  Opens: 6  Flush tables:
    1  Open tables: 0 QuerIEs per second avg: 0.014


  為了實現我們的目的,需要安裝另外三個軟件包。和MySQL不同的是,這三個軟件都是以RPM的格式給出的。切換至軟件包所在的目錄,運行以下命令:

[root@myserver odbc]#su
[root@myserver odbc]# rpm -Uvh MySQL-client-3.23.55-1.i386.rpm
Preparing...          ########################################### [100%]
   1:MySQL-clIEnt     ########################################### [100%]
[root@myserver odbc]# rpm -Uvh MySQL-shared-3.23.55-1.i386.rpm
Preparing...          ########################################### [100%]
   1:MySQL-shared     ########################################### [100%]
[root@myserver odbc]# rpm -Uvh MyODBC-2.50.39-1.i386.rpm
Preparing...          ########################################### [100%]
   1:MyODBC           ########################################### [100%]



  這些軟件包的安裝一般都不會有什麼問題。下面來安裝unixODBC。在我寫本文時最新的unixODBC是2.2.5版,提供下載的文件是unixODBC-2.2.5.tar.gz。切換至軟件包所在目錄,運行以下命令:




tar xzf unixODBC-2.2.5.tar.gz


  切換至unixODBC-2.2.5目錄,運行下述命令:

su
./configure
make
make install


  但是,這個安裝過程並不順利,出現了一些問題。首先是一些庫文件的位置問題,這兩個庫文件是libodbcmyS.so和libmyodbc.so,它們一般位於/usr/local/lib目錄之下。而在安裝過程中,odbcinst.ini配置文件中指示這兩個文件的位置卻在usr/lib目錄之下。所以需要對/etc/odbcinst.ini文件進行一些編輯。編輯完成後,我的odbcinst.ini文件內容如下所示:



[MySQL]
Description   = ODBC Driver for MySQL
Driver   = /usr/local/lib/libmyodbc.so
Setup   = /usr/local/lib/libodbcmyS.so
FileUsate   = 1
CPTimeout   =
CPReuse    =


  然後再創建一個/etc/odbc.ini文件,內容如下所示:

Description   = MySQL database test
Driver  = MySQL
Server  = localhost
Database   = test
Port   = 3306
Socket   = 
Option   =
Stmt    =


[MySQL-test]

  但是,當我按照手冊完成這個文件時,發現原來unixODBC已經建好了這個文件,不過它不在/etc目錄之下,而是在/usr/local/etc目錄下。於是我把上述兩個編輯好的文件拷貝至該目錄中。

  此外,安裝庫unixODBC時還需要KDE軟件開發工具包(其中已經包含了Qt)和X軟件開發工具包,否則安裝過程將無法進行下去。如果沒有安裝該軟件包,那麼可以選擇:開始選單→系統工具→軟件包。這時就會啟動Red Hat軟件包管理工具,選中上述兩項內容(如圖1所示),點擊確定進行安裝。



  3.進行測試

  首先看一看ODBC和MySQL是否可以正確溝通。我使用isql MySQL-test -v命令來進行測試,結果出現了“Could not SQLConnect”的錯誤信息。因為我使用了顯示詳細信息的-v選項,因此系統提示無法找到/var/lib/MySQL/MySQL.sock的信息。後來我發現MySQL是把MySQL.sock文件存儲在了/tmp目錄下,而ODBC則是在/var/lib/MySQL目錄下查找該文件,難怪它們不能順利溝通。

  現在以root身份來創建一個/var/lib/MySQL目錄,隨後運行以下命令:

chown -R MySQL.MySQL /var/lib/MySQL


  然後重新啟動MySQLd,並且指明了用戶名和socket的位置,命令如下所示:

bin/safe_MySQLd --user=MySQL --socket=/var/lib/MySQL/MySQL.sock &


  再測試一遍,結果一切正常。現在可以進行以下測試了:

/ isql MySQL-test -v
+---------------------------------------+
| Connected!            |
| | 
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select version();
+----------+
| version()|
+----------+
| 3.23.55 |
+----------+
1 rows affected
1 rows returned


  經過前面不斷地失敗,我都不趕相信軟件用戶手冊了。接著,啟動OpenOffice Writer,然後選擇工具→數據源。這時,又一個錯誤出現,OpenOffice顯示說無法找到libodbc.so。我把libodbc.so從/usr/local/lib拷貝到/usr/lib後,問題就解決了。於是,一切都正常了。圖2是OpenOffice的表設計窗口,在這個窗口中,我很容易就完成了一個表的設計,真是太棒了。



  雖然已經成功,但是我還是不覺得輕松,畢竟這個方法過於復雜。於是,我開始尋求更簡單的解決辦法。工夫不負有心人,最後,我終於找到了解決的辦法,也就是我將要給大家介紹的方法二。

  安裝配置方法二

  這種方法的基本思想是,通過RHN讓Red Hat自己進行軟件更新和依賴性的檢查,至於如何設置RHN,請參考本刊2003年第1期“使用RHN讓Red Hat Linux自動更新”的文章。

  在Red Hat 8.0中,安裝的步驟如下:

  第一步 up2date MySQL MySQL-server and MySQL-devel


  如果網速足夠快,那麼這個步驟也不會花太多的時間。在我的機器上,這個過程只花費了4分鐘,如圖3所示。



  第二步 /usr/bin/MySQL_install_db

  第三步 chown -R MySQL.MySQL /var/lib/MySQL

  第四步 chmod -R 666 /var/lib/MySQL

  第五步 /usr/bin/safe_MySQLd-u MySQL &

  第六步 up2date unixODBC unixODBC-devel

  第七步 up2date --src MyODBC

  第八步 rpmbuild --rebuild /var/spool/up2date/MyODBC-2.50.39-7.src.rpm

  第九步 rpm -Uvh --force /usr/src/redhat/RPMS/i386/MyODBC-2.50.39-7.i386.rpm

  第十步 參照方法一編輯/etc/odbc.ini和/etc/odbcinst.ini

  但是不知是什麼原因,每次當我使用up2date列表中的軟件包時都有一些問題。也許是某一次的安裝過程中,我沒有清理好系統,或者是當目錄樹下有如此多的軟件包時,up2date無法正確應對。不管怎麼說,我還是正確完成了安裝。

  小結

  現在再來做另外一件事情,就是從剛建立的表中提取內容,並且打印地址標簽。完成這個步驟花費了我大量的時間。按照幫助系統的指示,我大概了解了配置的過程,但是最後沒有成功。並且,這個配置過程非常的不直觀,更何況有的步驟根本就無法正常工作。

  為此,我在網上進行了大量檢索,並且分別到OpenOffice.org和MySQL的論壇中進行了提問,但問題都沒有得到解決。功夫不負有心人,最後我終於獲知原來出錯的原因居然是OpenOffice.org的幫助系統文件檔有一些錯誤。我終於找到了可以讓它正常工作的方法。

  當我第一次嘗試打印地址標簽時,MySQL提示出錯信息:“Too many connections.”,原來頁面中的每一個標簽都需要一個自己的連接。於是,我做了兩件事情來解決這個問題。首先,把下面這些加入到了/etc/my.cnf的MySQL章節中:

set-variable = max_connections=200


  中止了正在運行的進程之後,在重新啟動之前執行了su MySQL。我在網上看到有一個MySQL開發人員建議,如果不以root身份來啟動MySQLd的話可以解決“Too many connection”的問題。於是我以MySQL的身份重新啟動了MySQL,並且在命令行中加入了一個用戶參數。這樣改變以後,數據庫的訪問就正常了。當然,到底哪一個方法有效還要經過一些實驗。

  整個使用過程中,我的感覺是OpenOffice.org要遠比我想象的復雜和強大得多,它可以和各種數據庫管理系統一起工作。如果你的SOHO辦公環境需要數據庫訪問和操作,那麼我建議不要馬上切換至OpenOffice.org,而是先對其進行測試,看一看其是否可以滿足你的需求。需要指出的是,任何軟件無論是代碼還是文檔,都會有一些錯誤,所以不要對使用過程中出現的一些問題大加抱怨,應該以更積極的態度來發現和解決問題。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved