私はperlファイルからDBへの接続に問題があるかどうか判断するために助けが必要です。PerlスクリプトはエラーとコードでLinuxシェルからOracleに接続できません
コードはWebから(ブラウザから/file.plへ)実行されたときに正常に実行され、実行されます。シェルコンテキスト(パテ)で
、私はスクリプト "perlの/file.pl" を実行したとき、私はこのエラーを取得:
[date] file.pl: DBI connect('address','username', 'password') failed:
ERROR OCIEnvNlsCreate (check OR ACLE_HOME and NLS settings etc.) at file.pl line 61
ライン61は、読み取ります
$dbh = DBI->connect(A, B, C);
詳細を:別のユーザ(恐らくより多くのパーミッションを持つ)がファイルを実行すると、(シェル内で)彼のために働きます。
#!/usr/bin/perl -w
require 'include.pl';
require 'bencfg.pl';
use lib '/www/modules/'; #rqd
use DBI;
use DBD::Oracle;
print "Content-type: text/html; charset=UTF-8\n\n";
print "Test Run of connection...\n\n<br>";
print "ORA_HOME: '$ENV{ORACLE_HOME}'\n<br>"; #ORA_HOME: '/opt/oracle/10g/'
#connect to DB
$dbh = DBI->connect(A, B C) || die "Database connection not made: $DBI::errstr";
if($dbh){
print "OK\n<br>";
$dbh->disconnect;
}
else{
print "failed: $DBI::errstr\n";
}
私はDBI->接続作業の変数を知っています。それは問題ではありません。私はそのパーミッションを信じていますが、それを修正する方法はわかりません。
いくつかの追加情報: ORA_HOME: 'は/ opt /オラクル/ 10G'
NLS_SESSION_PARAMETERS
PARAMETER VALUE
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT MM/DD/YYYY HH24:MI:SS
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
、そのユーザーのENVの設定をダンプしてみます。あなたはまだそれらの解決策を調べていますか? –
あなたはこれを理解できましたか? – mrk
はい。ここでの問題はインストール/セットアップが不十分であったことです。私のユーザ名は、unixコマンドラインからsqlを接続して実行することができませんでした。それが解決されれば、他の問題も解決されました。 – brbdc