Home > Database > Mysql Tutorial > body text

让MySQL与OpenOffice共舞

WBOY
Release: 2016-06-07 16:04:06
Original
1350 people have browsed it

一年前,我成为了Linux用户的一员,但是多年使用Windows,让我觉得Linux有的工具使用不很习惯。就拿数据库来说,在Windows下,开发一些数据库驱动的网站或者小型管理系统时可以选择使用Access。Access不仅易于使用,而且非常方便。转到Linux上后,做同样事情

一年前,我成为了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所示),点击确定进行安装。

让MySQL与OpenOffice共舞

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的表设计窗口,在这个窗口中,我很容易就完成了一个表的设计,真是太棒了。

让MySQL与OpenOffice共舞

虽然已经成功,但是我还是不觉得轻松,毕竟这个方法过于复杂。于是,我开始寻求更简单的解决办法。工夫不负有心人,最后,我终于找到了解决的办法,也就是我将要给大家介绍的方法二。

安装配置方法二

这种方法的基本思想是,通过RHN让Red Hat自己进行软件更新和依赖性的检查,至于如何设置RHN,请参考本刊2003年第1期“使用RHN让Red Hat Linux自动更新”的文章。

在Red Hat 8.0中,安装的步骤如下:

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

如果网速足够快,那么这个步骤也不会花太多的时间。在我的机器上,这个过程只花费了4分钟,如图3所示。

让MySQL与OpenOffice共舞

第二步 /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,而是先对其进行测试,看一看其是否可以满足你的需求。需要指出的是,任何软件无论是代码还是文档,都会有一些错误,所以不要对使用过程中出现的一些问题大加抱怨,应该以更积极的态度来发现和解决问题。 


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template