【发布时间】:2012-01-24 10:07:16
【问题描述】:
我有一个连接到 Sybase 数据库服务器的 perl 脚本(服务器的别名 - MYDATABASESERVER)。我的代码是:
exec perl -w -x
#!perl
use Sybase::DBlib;
use Mail::Sendmail;
use Env qw(DSQUERY DBNAME DBUSER DBPASSWD);
$dbh = &execRemoteSQL($sql_text);
sub execRemoteSQL
{
my ($sqlText) = @_;
my ( $ret, $retS );
local ($dbh) = undef;
$dbh = new Sybase::DBlib $DBUSER, $DBPASSWD, $DSQUERY;
if ( !(defined $dbh) )
{
print STDERR "execRemoteSQL(): Failed To Create DB Handle for :\n";
print STDERR " SERVER = $DSQUERY\n";
print STDERR " DATABSE = $DBNAME\n";
exit(-1);
}
.
.
.
当我提供服务器名称为 MYDATABASESERVER(DSQUERY 的值)时,我在 If 语句中收到错误,但它正确连接到名称为 MYDB 的服务器。
想知道服务器名称长度是否有任何限制,或者是由于其他原因。
这是我收到的错误消息:
DB-Library error:
Unknown host machine name.
execRemoteSQL(): Failed To Create DB Handle for :
SERVER = MYDATABASESERVER
DATABSE = my_db
服务器别名定义正确,因为我可以使用 isql 连接到数据库。
【问题讨论】:
-
实际的错误信息是什么?
-
我不禁注意到 Sybase::DBlib 内置了调试功能:search.cpan.org/~mewp/sybperl-2.19/DBlib/… 有什么理由不使用它吗?