Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Problems Using the Perl DBI/DBD Interface

2.10.3 使用 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 中,而链接命令指定了 -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 到链接命令中(检查 make 的输出以获取 mysql.so 的编译信息)。 -L 选项应该指定 libgcc.a 所在目录的路径名。

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