我需要一些幫助來確定從perl文件到數據庫的連接問題。Perl腳本無法從linux shell連接到Oracle,出現錯誤和代碼
代碼在從網絡(瀏覽器到/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);
更多細節:當另一個用戶(可能擁有更多的權限)運行該文件時,它適用於他(在shell中)。
#!/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: '/選擇/ ORACLE/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
如果你做一個谷歌搜索'OCIEnvNlsCreate'你會獲得大量的點擊。你有沒有研究過這些解決方案? – 2011-06-08 16:46:05
你有沒有想過這個想法? – mrk 2011-06-30 23:09:02
是的。這裏的問題是一個糟糕的安裝/設置。我的用戶名無法連接並從unix命令行運行sql。一旦解決,其他問題就會落實。 – brbdc 2011-07-08 14:44:20