首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到Sybase DB时出错

连接到Sybase DB时出错
EN

Stack Overflow用户
提问于 2011-12-20 20:36:11
回答 2查看 1.8K关注 0票数 2

我有一个连接到Sybase数据库服务器的perl脚本(服务器的别名是MYDATABASESERVER)。我的代码是:

代码语言:javascript
复制
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的服务器。

我想知道服务器名称长度是否有任何限制,或者是由于其他原因。

下面是我收到的错误消息:

代码语言:javascript
复制
DB-Library error:
        Unknown host machine name.
execRemoteSQL(): Failed To Create DB Handle for :
 SERVER    = MYDATABASESERVER
 DATABSE   = my_db

服务器别名被正确定义,因为我能够使用isql连接到数据库。

EN

回答 2

Stack Overflow用户

发布于 2011-12-21 06:55:44

我不认为这里的服务器名称太长。

您的确切错误消息是什么?

可能在特定于Sybase的“接口”配置文件中没有正确定义MYDATABASESERVER服务器别名。它位于目录$SYBASE/$SYBASE_OCS中。关于MYDATABASESERVER (应该是2行),它说了什么?

无论如何:不要使用DBLib,它真的很旧而且已经过时了。我认为Sybperl/DBLib和DBD::Sybase模块的维护者仍然只支持Sybase::DBLib代码,以使必须处理旧程序的客户端程序员的工作更轻松,并使遗留应用程序与Sybase ASE的新版本兼容。

您应该改用DBI和DBD::Sybase。互联网上99%的perl/sybase代码使用DBI。

票数 1
EN

Stack Overflow用户

发布于 2011-12-20 22:54:18

您可以尝试以下语法吗?

代码语言:javascript
复制
$dbh = Sybase::DBlib->new( $DBUSER, $DBPASSWD, $DSQUERY );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8575535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档