从Perl脚本到Sybase DB的连接问题
我必须将我的Perl脚本连接到新构造的Sybase服务器版本-16.0.03.08.1019从Perl脚本到Sybase DB的连接问题,perl,sybase,Perl,Sybase,我必须将我的Perl脚本连接到新构造的Sybase服务器版本-16.0.03.08.1019 Error - login Failed (due to encrypt password issue) 之前,脚本是用Perl编写的: $conn = Sybase::DBlib->new($user,$pass,$server,"$dbase Handle"); $conn->sql("use $dbase"); 我在网上搜索了每一个写密码的
Error - login Failed (due to encrypt password issue)
之前,脚本是用Perl编写的:
$conn = Sybase::DBlib->new($user,$pass,$server,"$dbase Handle");
$conn->sql("use $dbase");
我在网上搜索了每一个写密码的地方,把它放到EncryptPassword=1
我尝试了以下两种方法,但都没有成功
$conn = Sybase::DBlib->new($user,$pass,$server,"$dbase Handle","EncryptPassword=1");
我的问题是,在Perl脚本中在哪里使用EncryptPassword=1
。我是否在正确的位置使用它。哇这让我回想起过去。当我上一次使用DBlib时(大约在1995年),我清单上的任务之一是用替换DBlib的所有用法-这是Sybase旨在替换DBlib的新技术。此后不久,该系统又被重写为使用and-这是二十多年来从Perl程序与Sybase数据库对话的推荐方式。您将注意到,的最新版本(包含Sybase::DBlib和Sybase::CTlib的CPAN发行版)是十多年前发布的。我很确定Sybase从本世纪初开始就不支持DBlib了
因此,请记住,您使用的是基本上已经过时且不应该使用的古老技术,有什么方法可以在不重写整个系统的情况下帮助您呢
也许吧
查看的文档,我看到了如何编写对new()
的调用的示例:
忽略这一事实,它使用的是任何rational程序员都会避免的new Class
语法,Class->new()
版本如下:
$dbh = Sybase::DBlib->new([$user [, $pwd [, $server [, $appname [, {additional attributes}]]]]])
请注意末尾的“附加属性”字段。我打赌那是你的东西需要去的地方。还要注意的是,它是{additional attributes}
——因此它看起来需要一个散列引用
因此,您可能需要的语法是:
$conn = Sybase::DBlib->new($user, $pass, $server, "$dbase Handle", {
EncryptPassword => 1,
});
请注意,这其中有大量的警告。不仅如此,鉴于Sybase::DBlib已经不受支持十年了,如果它根本不支持加密密码,我一点也不会感到惊讶
但它可能会起作用。这可能是你最大的希望
请尽一切可能更新您的代码库,以使用长期以来不受支持的工具和库
$dbh = Sybase::DBlib->new([$user [, $pwd [, $server [, $appname [, {additional attributes}]]]]])
$conn = Sybase::DBlib->new($user, $pass, $server, "$dbase Handle", {
EncryptPassword => 1,
});