Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 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 而不是 LD_RUN_PATH

请注意,您可能还需要修改 -L 选项,以便解决其他库找不到的问题。例如,如果连接器无法找到 libc,因为它在 /lib 中,而连接命令指定了 -L/usr/lib,那么将 -L 选项更改为 -L/lib,或将 -L/lib 添加到现有连接命令中。

如果您收到以下错误信息,您可能使用的是 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 库在编译时的连接命令中(检查 make 命令的输出以获取 mysql.so 的编译结果)。 -L 选项应该指定 libgcc.a 所在目录的路径。

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