我有一个带有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;
}
答案 0 :(得分:0)
在向Michael Peppler(模块编写者)发送电子邮件后,我得到了以下答案,问题已解决。
问题是lib3p目录,其中包含由OpenClient直接在运行时加载的库,特别是密码加密等等。
这个目录显然需要在LD_LIBRARY_PATH中,或者在默认的库搜索路径中引用。
基本上,我需要将OCS-15文件夹的路径添加到LD_LIBRARY_PATH