乐趣区

MySQL™-参考手册Perl安装说明

Perl 安装说明

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 上的登录名,Windows 上是 ODBC,默认密码为“无密码”。如果无法使用这些值连接到服务器(例如,如果你的帐户有密码),则测试将失败,你可以使用force install DBD::mysql 来忽略失败的测试。

DBI 需要 Data::Dumper 模块,它可能已安装,如果没有,你应该在安装 DBI 之前安装它。

也可以以压缩 tar 档案的形式下载模块发行版并手动构建模块,例如,要解压缩并构建 DBI 发行版,请使用以下过程:

  1. 将发行包解压缩到当前目录:

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

    此命令创建名为 DBI-VERSION 的目录。

  2. 将位置更改为解压缩发行包的顶级目录:

    shell> cd DBI-VERSION
  3. 构建发新版并编译所有内容:

    shell> perl Makefile.PL
    shell> make
    shell> make test
    shell> make install

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

每当安装新版本的 MySQL 时,重建并重新安装 DBD::mysql 发行版是个好主意,这可确保正确安装最新版本的 MySQL 客户端库。

如果你没有在系统目录中安装 Perl 模块的访问权限,或者如果要安装本地 Perl 模块,则以下引用可能有用:http://learn.perl.org/faq/per…。

在 Windows 上安装 ActiveState Perl

在 Windows 上,你应该执行以下操作以使用 ActiveState Perl 安装 MySQL DBD 模块:

  1. 从 http://www.activestate.com/Pr… 获取 ActiveState Perl 并安装它。
  2. 打开控制台窗口。
  3. 如有必要,请设置 HTTP_proxy 变量,例如,你可以尝试这样的设置:

    C:\> set HTTP_proxy=my.proxy.com:3128
  4. 启动 PPM 程序:

    C:\> C:\perl\bin\ppm.pl
  5. 如果你之前没有这样做,请安装 DBI:

    ppm> install DBI
  6. 如果成功,请运行以下命令:

    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)。
  • 修改用于编译 DBD::mysql-L选项以反映 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 添加到现有链接命令。

如果从 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 添加到 link 命令(在编译 Perl 客户端时检查 make mysql.so 的输出),-L 选项应指定 libgcc.a 在系统上所在目录的路径名。

这个问题的另一个原因可能是 Perl 和 MySQL 都不是用 gcc 编译的,在这种情况下,你可以通过使用 gcc 编译来解决不匹配问题。


退出移动版