0

x86 CPUを搭載したSolarisシステムを使用していますが、perlを使用してsybase dbに接続しようとすると、次のエラーが発生します(スクリプトをデバッグモードで実行し、関数DBD :: Sybase :: dbにステップインするとエラーが発生しました: :_Sybase.pmの94行目でログイン)

ct_con_props(CS_PASSWORD)が/usr/local/lib/perl5/site_perl/5.8.8/i86pc-solaris/DBD/Sybase.pm行94で失敗しました。/usr/local/lib/perl5/site_perl/5.8.8/i86pcで失敗しました-solaris / DBD/Sybase.pm行94DBD:: Sybase :: dr :: connect('DBI :: dr = HASH(0x8613a5c)'、'server = server1'、'user1、' password1'、' HASH(0x86b4e5c )')/usr/local/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 / local / 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で失敗しました。DBIconnect('server = server1'、'user1'、...)失敗:OpenClientメッセージ:LAYER =(1)ORIGIN =(4)SEVERITY =(6)NUMBER =(221)Server server1、databaseメッセージ文字列: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;
}
4

1 に答える 1

0

Michael Peppler(モジュールライター)にメールを送ったところ、次のような回答があり、問題は修正されました。

問題はlib3pディレクトリです。このディレクトリには、特にパスワードの暗号化などのために、実行時にOpenClientによって直接ロードされるライブラリが含まれています。

このディレクトリは明らかにLD_LIBRARY_PATHにあるか、デフォルトのライブラリ検索パスで参照されている必要があります。

したがって、基本的には、OCS-15フォルダーのパスをLD_LIBRARY_PATHに追加する必要があります。

于 2012-10-12T02:31:13.123 に答える