x86pc-solaris上的perl sybase连接错误

时间:2012-09-05 07:12:24

标签: perl sybase

我有一个带有x86 CPU的Solaris系统,当我尝试使用perl连接到sybase db时,我收到以下错误(当我在调试模式下运行脚本并进入函数DBD :: Sybase时生成错误: :第94行的Sybase.pm中的db :: _ login

ct_con_props(CS_PASSWORD)在/usr/local/lib/perl5/site_perl/5.8.8/i86pc-solaris/DBD/Sybase.pm第94行失败。  at /usr/local/lib/perl5/site_perl/5.8.8/i86pc-solaris/DBD/Sybase.pm第94行         在/ usr / local /调用的DBD :: Sybase :: dr :: connect('DBI :: dr = HASH(0x8613a5c)','server = server1','user1,'password1','HASH(0x86b4e5c)') lib / perl5 / site_perl / 5.8.8 / i86pc-solaris / DBI.pm第617行         DBI :: _ ANON _ / usr / local / lib / perl5 / site_perl / 5.8.8 / i86pc-solaris / DBI.pm:679在/ usr / local / lib / perl5 / site_perl /调用5.8.8 / i86pc-solaris / DBI.pm第681行         DBI :: connect('DBI','DBI:Sybase:server = server1','user1,'password1')在./test.pl第28行调用 DBI :: CODE(0x83fcdd4)(在/ usr /本地/ LIB /的perl5 / SITE_PERL / 5.8.8 /了i86pc-的Solaris / DBI.pm:618): 618:$ user =''if!defined $ user;

从消息中看来,密码似乎有问题?但我确信密码是正确的,相同的代码在Spark-solaris系统上工作得很好,任何人都可以告诉我什么是错的,或者告诉我如何进入函数DBD :: Sybase :: db :: _ login( $ this,$ server,$ user,$ auth,$ attr)?看起来这个函数是在一个.xs文件中,但我找不到它在哪里,也无法调试到它。

如果我在没有调试的情况下运行脚本,则会出现以下错误

ct_con_props(CS_PASSWORD)在/usr/local/lib/perl5/site_perl/5.8.8/i86pc-solaris/DBD/Sybase.pm第94行失败。 DBI connect('server = server1','user1',...)失败:OpenClient消息:LAYER =(1)ORIGIN =(4)SEVERITY =(6)NUMBER =(221) 服务器server1,数据库 消息字符串:ct__string_extended_encryption:用户api层:内部公共库错误:错误字符串不可用  在./test.pl第28行 在./test.pl第28行连接失败。

这是Sybase.pm

中的子连接代码
 sub connect {
    my($drh, $dbase, $user, $auth, $attr) = @_;
    my $ifile = '';
    my $server = $dbase || $ENV{DSQUERY} || 'SYBASE';

    my($this) = DBI::_new_dbh($drh, {
        'Name'         => $server,
        'Username'     => $user,
        'CURRENT_USER' => $user,
    });

    DBD::Sybase::db::_login($this, $server, $user, $auth, $attr)
        or return undef;

    return $this;
}

1 个答案:

答案 0 :(得分:0)

在向Michael Peppler(模块编写者)发送电子邮件后,我得到了以下答案,问题已解决。

问题是lib3p目录,其中包含由OpenClient直接在运行时加载的库,特别是密码加密等等。

这个目录显然需要在LD_LIBRARY_PATH中,或者在默认的库搜索路径中引用。

基本上,我需要将OCS-15文件夹的路径添加到LD_LIBRARY_PATH