当前位置: 首页 > 文档资料 > MySQL 中文手册 >

2.13. Perl安装注意事项

优质
小牛编辑
132浏览
2023-12-01
2.13.1. 在Unix中安装Perl
2.13.2. 在Windows下安装ActiveState Perl
2.13.3. 使用Perl DBI/DBD接口的问题

Perl对MySQL的支持借助DBI/DBD客户端接口。接口要求Perl 5.6.0或以后版本。如果你的Perl版本更旧,接口将不能工作。

如果想要在Perl DBI中使用事务,需要有1.2216版或更新版DBD::mysql。建议使用2.9003版或更新版。

如果你使用MySQL 4.1客户端库,必须使用DBD::mysql 2.9003或更新版。

MySQL分发版不包含Perl支持。可以从http://search.cpan.org获得Unix需要的模块,或在Windows中使用ActiveStateppm程序。以下章节描述了如何做。

如果你想要运行MySQL基准脚本,必须安装Perl支持。请参见7.1.4节,“MySQL基准套件”。

2.13.1. 在Unix中安装Perl

MySQL Perl支持也要求你安装了MySQL客户端编程支持(库和头文件)。大多数安装中安装了必要的文件。但是,如果你在Linux中从RPM文件安装MySQL,确保安装了开发者RPM。客户端程序在客户端RPM中,但是客户端编程支持在开发者RPM。

如果你想要安装Perl支持,需要的文件能从http://search.cpan.org的CPAN (Comprehensive Perl Archive Network)获得。

在Unix中安装Perl模块最简单的方法是使用CPAN模块。例如:

shell> perl -MCPAN -e shell
cpan> install DBI
cpan> install DBD::mysql

DBD::mysql安装运行许多测试。测试中使用默认用户名和密码尝试连接本地MySQL服务器。(默认用户名是Unix中的登录名和Windows中的ODBC。默认密码“没有密码。”)如果你不能通过这些值连接服务器 (例如,如果你的账户有密码),测试失败。可以使用force install DBD::mysql忽略失败的测试。

DBI需要Data::Dumper模块。应该可以安装;如果不能,应当在安装DBI前安装Data::Dumper模块。

还可以下载tar文件压缩格式的模块分发版,并手动构建模块。例如,解压缩和构建DBI分发版的过程为:

1. 将分发版解压缩到当前目录:

2.    shell> gunzip < DBI-VERSION.tar.gz | tar xvf -

该命令创建目录 DBI-VERSION

3. 进入解压缩分发版的顶级目录:

4.    shell> cd DBI-VERSION

5. 构建分发版并编译:

6.    shell> perl Makefile.PL
7.    shell> make
8.    shell> make test
9.    shell> make install

make test命令很重要,因为它验证模块正在工作。注意:在你DBD::mysql安装期间运行该命令试验接口代码时,MySQL服务器必须正在运行,否则测试将失败。

无论何时你安装一个新版本的MySQL,重建并且重新安装DBD::mysql分发版是一个好主意,特别是在升级MySQL后,观察所有异常,如DBI脚本失败。

如果你没有权限在系统目录下安装Perl模块,或如果你安装本地Perl模块,下列参考书可以帮助你:http://servers.digitaldaze.com/extensions/perl/modules.html#modules

在标题“Installing New Modules that Require Locally Installed Modules”下面查找。

2.13.2. 在Windows下安装ActiveState Perl

在Windows中,应当按照以下步骤安装带ActiveState Perl的MySQL DBD模块:

·从http://www.activestate.com/Products/ActivePerl/获得ActiveState Perl并安装。

·打开控制台窗口(“DOS窗口)。

·如果需要,设置HTTP_proxy变量。例如,你可以试试:

·set HTTP_proxy=my.proxy.com:3128

·启动PPM程序:

·C:\> C:\perl\bin\ppm.pl

·如果你还没有安装DBI,则安装:

·ppm> install DBI

·如果成功,运行下面的命令:

·install\
·ftp://ftp.de.uu.net/pub/CPAN/authors/id/JWIED/DBD-mysql-1.2212.x86.ppd

该进程应当在ActiveState Perl 5.6或更新版本中工作。

如果你不能使上述步骤工作,应该安装MyODBC驱动程序并且通过ODBC连接MySQL服务器:

use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn",$user,$password) ||
die "Got error $DBI::errstr when connecting to $dsn\n";

2.13.3. 使用Perl DBI/DBD接口的问题

如果Perl报告它不能发现../mysql/mysql.so模块,可能试因为Perl不能定位共享库libmysqlclient.so。

可以使用下面的方法修复该问题:

·用perl Makefile.PL -static -config而不要用perl Makefile.PL编译DBD::mysql分发版。

·将libmysqlclient.so复制到其它共享库所在的目录 (可能为/usr/lib或/lib)。

·修改用来编译DBD::mysql的-L选项,反应libmysqlclient.so的实际位置。

·在Linux中,你可以将libmysqlclient.so的目录路径名增加到/etc/ld.so.conf文件。

·将libmysqlclient.so的目录路径名增加到LD_RUN_PATH环境变量。一些系统使用LD_LIBRARY_PATH。

注意如果连接器没有找到另一个库,你还可能需要修改-L选项。例如,如果因为libc在/lib下并且连接命令指定了-L/usr/lib,连接器不能找到它,将-L选项更改为-L/lib或在连接命令中增加-L/lib。

如果你遇到下面的DBD::mysql错误,你可能使用了gcc(或使用了用gcc编译的旧的二进制):

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

当构建mysql.so库是在连接命令中增加-L/usr/lib/gcc-lib/... -lgcc(当编译Perl客户端时检查生成mysql.so的make的输出)。-L选项应指定libgcc.a在系统中的安装目录的路径名。

该问题的另一个原因是Perl和MySQL没有用gcc编译。在这种情况下,你可以用gcc编译二者来解决。

当你运行测试时你会从DBD::mysql看见下面的错误:

t/00base............install_driver(mysql) failed:
Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql:
../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol:
uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169.

这意味着你需要在连接行包括-lz压缩库。可以通过更改文件lib/DBD/mysql/Install.pm的下列行来实现:

$sysliblist .= " -lm";

更改为:

$sysliblist .= " -lm -lz";

然后,你必须运行make realclean 然后重新安装。

如果你想要在SCO上安装DBI,需要在DBI-xxx和每个子目录中编辑Makefile。请注意下面的更新假定使用gcc 2.95.2或更新版:

旧: 新:
CC = cc       CC = gcc
CCCDLFLAGS = -KPIC -W1,-Bexport       CCCDLFLAGS = -fpic
CCDLFLAGS = -wl,-Bexport      CCDLFLAGS =
 
LD = ld       LD = gcc -G -fpic
LDDLFLAGS = -G -L/usr/local/lib       LDDLFLAGS = -L/usr/local/lib
LDFLAGS = -belf -L/usr/local/lib      LDFLAGS = -L/usr/local/lib
 
LD = ld       LD = gcc -G -fpic
OPTIMISE = -OdOPTIMISE = -O1
 
旧:
CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include
 
新:
CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include

这些更改是必需的,因为用icccc编译的Perl动态装载器不装载DBI模块。

如果你想要在不支持动态链接(例如 SCO)的系统中使用Perl模块,可以生成一个包括DBI和DBD::mysql的静态版本的Perl。方法是生成一个用DBI代码连接的Perl版本,并将它安装到当前Perl的顶级目录。然后构建一个含DBD代码连接的Perl版本并安装。

在SCO中,必须将下面的环境变量设置为:

LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib

Or:

LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
    /usr/progressive/lib:/usr/skunk/lib
LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
    /usr/progressive/lib:/usr/skunk/lib
MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:\
    /usr/skunk/man:

首先,在DBD分发版的安装目录运行下述命令来创建一个包括静态连接的DBD模块的Perl:

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

然后必须安装新的Perl。make perl的输出表示安装时需要执行的make命令。在SCO中,为make -f Makefile.aperl inst_perl MAP_TARGET=perl

然后,使用刚刚创建的Perl,在DBD::mysql分发版的安装目录运行下述命令来创建另一个Perl,应包括静态连接的DBD::mysql:

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

最后,应当安装新的Perl。make perl的输出指示了使用的命令。

这是MySQL参考手册的翻译版本,关于MySQL参考手册,请访问dev.mysql.com.。原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。