in reply to DBI Not working

Just so i can check for Driver specific issues, which DBD are you using ?
Thus spake the Master Programmer:
"When you have learned to snatch the error code from the trap frame, it will be time for you to leave."
-- The Tao of Programming

Replies are listed 'Best First'.
Re: Re: DBI Not working
by HitMan (Initiate) on Aug 16, 2001 at 14:10 UTC
    I haven't explicitly specified any DBD , I think its using the default, Sybase driver.
      I am not sure about any defaults, what is the information being used by the connect() call ?
          It does appear it could be DBD::Sybase, based on the sysobjects comment, but i am asking because i could not find get_db_name() in my copies of DBI or DBD::Sybase and wanted to verify versions (if possible).
          Also, almost forgot, where is it printing that the database has changed to master ?
        Actually get_db_name() is a subroutine .Sorry I didn't include the subroutine. Here is the connect string;
        ### Our DBI parameters are: $dsn="dbi:Sybase:server=$DB_SERVER"; ### Connect DB $dbh = DBI->connect ($dsn, $DB_USER, $DB_PWD) ;
        here is the complete code :
        sub process_database { for ($i=0;$i<$#databases+1;$i++) { $database = $databases[$i] ; ### Use DB $dbh->do("USE $database") || log_message ("SERI","Database error $ +dbh->errstr") ; get_db_name(); ## output here is okay ### Get details from sysobjects $sql = ""; $sql = "SELECT 1 " ; $sth = $dbh->prepare($sql); $sth->execute(); get_db_name(); ## output here is master $objcount =0; while (@row = $sth->fetchrow_array) { ## might give an error as th +ere wasn't any execute statement before this ($object = $row[0]) =~ s/\s//g ; $sql = ""; $sql = "GRANT ALL ON $object TO PUBLIC" ; # $dbh->do($sql) || log_message ("SERI","Database error $dbh->er +rstr"); $objcount ++; } ## end of while get_db_name(); ## output here is okay log_message("INFO","$objcount objects affected in $database"); } ## end of for } ## end of subroutine ############################ GET DB NAME() ########################### +######### sub get_db_name { $sql_dbname = "select db_name() "; $sth = $dbh->prepare($sql_dbname); $sth->execute() || die "ERROR : Database error $sth->errstr\n" ; while (@row = $sth->fetchrow_array) { $_ = $row[0]; s/\s//g; print "IN DATABASE $_ \n"; } ## end of while }