我正在尝试在程序中连接perl和mysql但收到错误:perl:符号查找错误:/usr/local/lib/perl/5.10.1/auto/DBD/mysql/mysql.so:undefined symbol: mysql_init。请指导..
我已经通过xampp安装了mysql并在终端上使用xampp(/ opt ...命令)运行它。 Mysql从终端成功运行,但我无法通过perl程序检索值。
我正在运行的Perl程序是:
#!/usr/bin/perl -w
use DBI;
$dbh = DBI->connect('dbi:mysql:first','root','shaifu')
or die "Connection Error: $DBI::errstr\n";
$sql = "select * from q";
$sth = $dbh->prepare($sql);
$sth->execute
or die "SQL Error: $DBI::errstr\n";
while (@row = $sth->fetchrow_array) {
print "@row\n";
}
其中first是数据库,q是表。
DBI和DBD也按照perl -e安装,使用DBI'和perl -e'使用DBD :: mysql;'在终端上没有任何回报。
请帮我解决问题。
答案 0 :(得分:0)
好的,我将切断这个效率低下的信息查询过程,并猜出问题所在。
/usr/local/lib/perl/5.10.1/auto/DBD/mysql/mysql.so:undefined symbol:mysql_init
这意味着auto/DBD/mysql/mysql.so
所依赖的库之一无法找到,所以
ldd /usr/local/lib/perl/5.10.1/auto/DBD/mysql/mysql.so
将显示类似
的内容...
libmysqlclient.so.18 => not found
这意味着加载程序无法找到libmysqlclient.so.18
。这可能意味着
yum install community-mysql-libs
; export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/path/to/libmysqlclient
,假设你的libmysqlclient.so
位于/path/to/libmysqlclient
下。 /sbin/ldconfig -n /path/to/libmysqlclient
,将/path/to/libmysqlclient
(包含您的libmysqlclient.so*
的目录)添加到系统的库搜索路径中。 顺便说一下,如果有可能,你应该总是通过Linux发行版的软件包管理器安装你需要的任何软件,这可以避免几乎所有这些恼人的依赖问题。