使用Perl安装mySQL
Perl DBI
模块提供了用于数据库访问的通用接口。您可以编写DBI
无需更改即可与许多不同数据库引擎一起使用的脚本。要使用DBI
,必须DBI
为要访问的每种类型的数据库服务器安装该模块以及一个数据库驱动程序(DBD)模块。对于MySQL,此驱动程序是DBD::mysql
模块。
注意MySQL发行版不包含Perl支持。您可以从Unix的http://search.cpan.org获得必需的模块,或者在Windows上使用ActiveState ppm程序。以下各节描述了如何执行此操作。
DBI
/DBD
接口要求Perl 5.6.0,5.6.1和或更高是优选的。如果您使用的是Perl的旧版本,则DBI 不起作用。您应该使用DBD::mysql
4.009或更高版本。尽管可以使用早期版本,但它们不支持MySQL 8.0的全部功能。
在Unix上安装Perl
MySQL Perl支持要求您已安装MySQL客户端编程支持(库和头文件)。大多数安装方法会安装必要的文件。如果在Linux上从RPM文件安装MySQL,请确保也安装开发人员RPM。客户端程序在客户端RPM中,但是客户端编程支持在开发人员RPM中。
可从http://search.cpan.org的CPAN(综合Perl存档网络)获得支持Perl所需的文件。
在Unix上安装Perl模块的最简单方法是使用该CPAN
模块。例如:
shell>perl -MCPAN -e shell cpan> install DBI cpan> install DBD::mysql
该DBD::mysql
安装将运行许多测试。这些测试尝试使用默认的用户名和密码连接到本地MySQL服务器。(默认的用户名是在Unix上的登录名,并ODBC
在Windows上,默认密码为“没有密码。”)如果您无法连接到使用这些值(例如,如果你的账户有密码),测试服务器失败。您可以force install DBD::mysql
用来忽略失败的测试。
DBI
需要Data::Dumper
模块。它可能已安装;如果不是,则应在安装之前安装它DBI
。
也可以下载压缩的tar存档形式的模块发行版并手动构建模块。例如,要解压并构建DBI发行版,请使用以下过程:
将发行版解压缩到当前目录中:
shell>
gunzip < DBI-VERSION.tar.gz | tar xvf -此命令创建一个名为的目录。
DBI-VERSION
将位置更改为解压缩发行版的顶级目录:
shell>
cd DBI-VERSION构建发行版并编译所有内容:
shell>
perl Makefile.PL shell>make shell>make test shell>make install
该化妆测试命令很重要,因为它验证模块正在工作。请注意,在DBD::mysql
安装过程中运行该命令以执行接口代码时,MySQL服务器必须正在运行,否则测试将失败。
DBD::mysql
每当您安装新版本的MySQL时,重建并重新安装发行版是一个好主意。这样可以确保正确安装了最新版本的MySQL客户端库。
如果您无权在系统目录中安装Perl模块,或者您想安装本地Perl模块,则以下参考资料可能会有用:http://learn.perl.org/faq/perlfaq8.html#How-do-I-keep-my-own-module-library-directory-
在Windows上安装ActiveState Perl
在Windows上,您应该执行以下操作以DBD
使用ActiveState Perl 安装MySQL 模块:
- 从http://www.activestate.com/Products/ActivePerl/获取ActiveState Perl 并进行安装。
- 打开控制台窗口。
如有必要,设置
HTTP_proxy
变量。例如,您可以尝试这样的设置:C:\>
set HTTP_proxy=my.proxy.com:3128启动PPM程序:
C:\>
C:\perl\bin\ppm.pl 如果您以前没有这样做,请安装
DBI
:ppm> install DBI
如果成功,请运行以下命令:
ppm> install DBD-mysql
此过程应与ActiveState Perl 5.6或更高版本一起使用。
如果无法使该程序正常运行,则应改为安装ODBC驱动程序,然后通过ODBC连接到MySQL服务器:
use DBI; $dbh= DBI->connect("DBI:ODBC:$dsn",$user,$password) ||die "Got error $DBI::errstr when connecting to $dsn\n";
使用Perl DBI / DBD接口的问题
如果Perl报告它找不到../mysql/mysql.so
模块,则可能是Perl无法找到libmysqlclient.so
共享库。您应该能够通过以下方法之一解决此问题:
- 复制
libmysqlclient.so
到其他共享库所在的目录(可能为/usr/lib
或/lib
)。 - 修改
-L
用于编译的选项DBD::mysql
以反映的实际位置libmysqlclient.so
。 - 在Linux上,您可以将文件所在目录的路径名添加
libmysqlclient.so
到/etc/ld.so.conf
文件中。 - 将目录的路径名添加
libmysqlclient.so
到LD_RUN_PATH
环境变量中。某些系统LD_LIBRARY_PATH
改为使用。
请注意,-L
如果链接器找不到其他库,则可能还需要修改选项。例如,如果链接器libc
因为位于其中/lib
而找不到,并且link命令指定-L/usr/lib
,请将-L
选项更改为-L/lib
或添加-L/lib
到现有的link命令。
如果您从中遇到以下错误DBD::mysql
,则可能是在使用gcc(或使用了用gcc编译的旧二进制文件):
/usr/bin/perl: can't resolve symbol '__moddi3' /usr/bin/perl: can't resolve symbol '__divdi3'
添加-L/usr/lib/gcc-lib/...-lgcc
到当链接命令mysql.so
库被建(检查从输出化妆的mysql.so
,当你编译Perl客户端)。该-L
选项应指定libgcc.
系统上目录的路径名。
造成此问题的另一个原因可能是Perl和MySQL都未使用gcc进行编译。在这种情况下,可以通过使用gcc进行编译来解决不匹配问题。