【发布时间】:2010-09-28 13:35:58
【问题描述】:
我有一些旧的 perl 代码最近停止在 FreeBSD 机器上工作。失败的代码(最简单的形式)如下所示:
#!/usr/local/bin/perl -w
use strict;
use DBI;
my $datasource = "DBI:mysql:dbname:hostname.domain.com";
my $user = "username";
my $pass = "password";
DBI->connect($datasource, $user, $pass);
这会失败并出现以下错误:
/libexec/ld-elf.so.1: /usr/local/lib/mysql/libmysqlclient.so.15: Undefined symbol "gethostbyname_r"
如果我将数据源更改为引用“localhost”,则代码成功。
我已经从端口重新安装了 mysql-client、DBI 和 DBD-mysql;没有效果。
此服务器上的其他应用程序(PHP、命令行工具)能够通过主机名轻松访问 mysql 数据库。
关于如何解决这个问题的建议?
编辑添加:我注意到我的盒子有libmysqlclient.so.15 和libmysqlclient_r.so.15。问题可能是 DBD::mysql 在应该使用 libmysqlclient_r 时尝试使用 libmysqlclient 吗?如果是,如何解决?
【问题讨论】: