我有一些旧的perl代码,最近停止在FreeBSD上工作。这样它看起来失败(以最简单的形式)的代码:如何在FreeBSD上用gethostbyname_r和DBI或DBD :: MySQL解决这个问题?
#!/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”的代码成功。
我已经从ports重新安装了mysql-client,DBI和DBD-mysql;没有效果。
此服务器上的其他应用程序(PHP,命令行工具)能够通过主机名访问mysql数据库,没有麻烦。
如何解决此问题的建议?
编辑添加:我注意到我的箱子有libmysqlclient.so.15
和libmysqlclient_r.so.15
。可能问题是DBD :: mysql在尝试使用libmysqlclient时应该使用libmysqlclient_r?如果是这样,如何解决?
这听起来很有道理,但我没有看到任何相关端口上的可调选项 – davidcl 2008-12-27 21:12:59
哦,我不使用二进制包 - 从源端口编译的所有东西 – davidcl 2008-12-27 21:15:37
请参阅我的问题底部的编辑以获取可能的引导 – davidcl 2008-12-27 21:21:22