cruddy and smartcruddy : anyone using a different DBI Oracle Port?

[email protected] ("Derrin Morton")
Newsgroups perl.dbi.users
Message-ID <[email protected]>
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);
...
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.