Hello

 Environment
 Debian 2.6.26-2-686 / Perl 5.10.0
 Question CGI/CRUD - and its encapsulation of DBI using their DBIx::Knowledge
 http://www.thesmbexchange.com/smartcruddy/index.html
 I can see from the apache2 logs that my httpd.conf variables DBI_DSN DBI_USER
DBI_PASS being processed correctly.  
 However, my host Oracle database is only accessible via port 1524 (our
Network admin is strict).
 The default Oracle port is 1521 and I suspect smartcruddy has made the
assumption that all Oracle DB's will be available over this port. 
However - I cannot find the relevant DBI variable to over-ride the Port number
- - has anyone come across this and tried to adjust the port in cruddy itself

I am relatively familiar with DBI and use the following to connect etc

my $oracle_port = "1524";
...
my $dbh =
DBI->connect("dbi:Oracle:host=$oracle_server;port=$oracle_port;sid=$oracle_sid");



But the only place in Cruddy collects these variables is from apache2
httpd.conf file  (as follows):

# Smart Cruddy
SetEnv DBI_DSN dbi:Oracle:mydb
SetEnv DBI_USER myuser
SetEnv DBI_PASS mypass
SetEnv DBI_PORT 1524

# DBI Variables
SetEnv DBI_DRIVER Oracle
SetEnv DBI_PORT 1524
SetEnv DBI_USERNAME myuser
SetEnv DBI_PASSWORD mypass
SetEnv DBI_DATABASE mydb

SetEnv CRUDDY_FAST_TEMPLATE_PATH /var/www/tpl
SetEnv SMARTCRUDDY_FAST_TEMPLATE_MAIN smartcruddy.tpl

# Variables definately set in environment - but proving so below
#  PassEnv LD_LIBRARY_PATH
#  PassEnv ORACLE_HOME

SetEnv LD_LIBRARY_PATH /opt/oracle/product/11.1.0/lib
SetEnv ORACLE_HOME /opt/oracle/product/11.1.0




I have tried the following on httpd DBI_DSN
SetEnv DBI_DSN dbi:Oracle:mydb:1524
(along with all the other required variables I should add)
to no avail

Is there a DBI_PORT switch or some other relevant variable?

Error messages from this product 

When I run the smartcruddy.pl script that is shipped from the command the
following message is returned



Can't connect to data source '' because I can't work out what driver to use
(it doesn't seem to contain a 'dbi:driver:' prefix and the DBI_DRIVER env var
is not set) at /usr/local/share/perl/5.10.0/CGI/CRUD/CGIOutputFastTemplate.pm
line 38

When I run the script as intended from a browser - I get the appropriate HTTP
500 and the apache2/error.log reads as follows
[Fri Jul 02 19:20:48 2010] [error] [client 10.234.18.189] DBI
connect('mydb','rep_dwh',...) failed: ERROR OCIEnvNlsCreate. Check ORACLE_HOME
(Linux) env var  or PATH (Windows) and or NLS settings, permissions, etc. at
/usr/local/share/perl/5.10.0/CGI/CRUD/CGIOutputFastTemplate.pm line 38
[Fri Jul 02 19:20:48 2010] [error] [client 10.234.18.189] [CGI::FastTemplate]
Warning: no value found for variable: HOME_URL
[Fri Jul 02 19:20:48 2010] [error] [client 10.234.18.189] Can't call method
"header" on an undefined value at
/usr/local/share/perl/5.10.0/CGI/CRUD/CGIOutputFastTemplate.pm line 91.
[Fri Jul 02 19:20:48 2010] [error] [client 10.234.18.189] Premature end of
script headers: smartcruddy.pl

 
 
 Help really appreciated - if this can get working I can advance our BI stack
dramatically

#/usr/local/share/perl/5.10.0/CGI/CRUD/CGIOutputFastTemplate.pm : line 39
 89         my $gob = $tpl->fetch('CONTENT');
    90  
    91      print $self->{cgi}->header, $$gob;

 
#/usr/local/share/perl/5.10.0/CGI/CRUD/CGIOutputFastTemplate.pm : line 38
unless ($self->{dbh} = DBI->connect(undef,undef,undef,{ PrintError => 1,
RaiseError => 0, AutoCommit => 1, })) 

# the main smartcruddy.pl script declares the $dbh as follows - which is just
plain confusing

my $r = new CGI::CRUD::CGIOutputFastTemplate($q) or exit 0;
...

if (!length($req_table_name) || $r->param('__SDAT_TAB_ACTION.RESTART'))
{
    request_action($r);
}
else
{
    my $report = new DBIx::Knowledge::Report($r,$req_table_name) or exit 0; 
    $report->{action} = $action;
    $report->select_list_from_table(uc($req_table_name)) or exit 0; 
    $report->take_action();
}



sub request_action
{
    my ($r) = @_;
    my $dbh = $r->dbh();
    my $form = $r->form($dbh);
...
}
 

 
 
 
 

 

Reply via email to