gpt4 book ai didi

mysql - 如何在 FreeBSD 上使用 gethostbyname_r 和 DBI 或 DBD::MySQL 解决此问题?

转载 作者:行者123 更新时间:2023-11-29 01:25:48 26 4
gpt4 key购买 nike

我有一些旧的 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”,代码就会成功。

我已经从 ports 重新安装了 mysql-client、DBI 和 DBD-mysql;没有效果。

此服务器上的其他应用程序(PHP、命令行工具)能够通过主机名毫无问题地访问 mysql 数据库。

关于如何解决这个问题的建议?

编辑添加:我注意到我的盒子上有 libmysqlclient.so.15libmysqlclient_r.so.15。问题可能是 DBD::mysql 在应该使用 libmysqlclient_r 时尝试使用 libmysqlclient 吗?如果是这样,如何解决?

最佳答案

黑暗中的一枪:

gethostbyname_r 表示 Perl 使用解析器代码的“可重入”(也称为线程/多线程)版本。好像有什么问题。

从端口树编译依赖项时,您通常可以打开或关闭多线程。您可以使用每个 ports 应用程序目录中的 make config 更改之前的选择。

如果您安装了二进制包,则可能存在版本不匹配的地方。

关于mysql - 如何在 FreeBSD 上使用 gethostbyname_r 和 DBI 或 DBD::MySQL 解决此问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/395402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com