Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: DBD::CSV::st execute failed: Can't locate object method "do_err" via package "SQL::Statement::Function::NumericEval"

by Tux (Canon)
on Jul 07, 2016 at 19:32 UTC ( [id://1167408]=note: print w/replies, xml ) Need Help??


in reply to DBD::CSV::st execute failed: Can't locate object method "do_err" via package "SQL::Statement::Function::NumericEval"

Strange code. Really weird. Why finish anddisconnect after the return? These are never executed. Why finish immediately after creation of the handle, even before the execute. Weird again. If I clean up the code minimally and run that with recent versions of DBI, Text::CSV_XS, and DBD::CSV, I do not see that error. Maybe we also should get some data.

FWIW the use Text::CSV; is completely useless, as DBD::CSV will use Text::CSV_XS automatically

$ cat newCsv.csv sid,genotype,dnabl,dnatw12 1,a,3,4 $ cat test2.pl use 5.20.0; use warnings; use DBI; sub RunSqlSearch; my $spreadsheet = "newCsv"; my $query = qq(SELECT sid, genotype, dnabl, dnatw12 FROM $spreadsheet WHERE ge +notype = 'a' AND (dnatw12/dnabl)<0.5 AND dnatw12 IS NOT NULL); my ($queryResult) = RunSqlSearch ($query); say "Your query $query returned the following result:\n$queryResult"; sub RunSqlSearch { my $query = shift; # error check # $query eq "" and die "From runSqlQuery2 - No value entered for $q +uery $!\n"; # Connect to the database, (the directory containing our csv file( +s)) my $dbh = DBI->connect ("dbi:CSV:", undef, undef, { f_dir => ".", f_ext => ".csv/r", f_encoding => "utf-8", csv_eol => "\n", RaiseError => 1, }) or die $DBI::errstr; # Output using sql query # my $sth = $dbh->prepare ($query); $sth->execute; my $queryResult = ""; my @queryResult; while (my @row = $sth->fetchrow_array) { push @queryResult, @row; $queryResult .= join ("\t", @row) . "\n"; } # output arguments # $queryResult eq "" and $queryResult = "No result found"; return $queryResult; $sth->finish (); # Never executed $dbh->disconnect (); # Never executed } # RunSqlSearch $ perl test2.pl perl test2.pl Your query SELECT sid, genotype, dnabl, dnatw12 FROM newCsv WHERE geno +type = 'a' AND (dnatw12/dnabl)<0.5 AND dnatw12 IS NOT NULL returned t +he following result: No result found $ perl -MV=DBI,Text::CSV_XS,DBD::CSV DBI /pro/lib/perl5/site_perl/5.22.0/x86_64-linux-thread-multi-ld/D +BI.pm: 1.636 Text::CSV_XS /pro/lib/perl5/site_perl/5.22.0/x86_64-linux-thread-multi-ld/T +ext/CSV_XS.pm: 1.23 DBD::CSV /pro/lib/perl5/site_perl/5.22.0/DBD/CSV.pm: 0.49 $

After re-reading the original post, I tried with empty fields, and can reproduce the error:

$ cat newCsv.csv sid,genotype,dnabl,dnatw12 1,a,, $ perl test2.pl DBD::CSV::st execute failed: Can't locate object method "do_err" via p +ackage "SQL::Statement::Function::NumericEval" at /pro/lib/perl5/site +_perl/5.22.0/SQL/Statement/Function.pm line 226, <GEN1> line 2. [for Statement "SELECT sid, genotype, dnabl, dnatw12 FROM newCsv WHER +E genotype = 'a' AND (dnatw12/dnabl)<0.5 AND dnatw12 IS NOT NULL"] at + test2.pl line 32, <GEN1> line 2. DBD::CSV::st execute failed: Can't locate object method "do_err" via p +ackage "SQL::Statement::Function::NumericEval" at /pro/lib/perl5/site +_perl/5.22.0/SQL/Statement/Function.pm line 226, <GEN1> line 2. [for Statement "SELECT sid, genotype, dnabl, dnatw12 FROM newCsv WHER +E genotype = 'a' AND (dnatw12/dnabl)<0.5 AND dnatw12 IS NOT NULL"] at + test2.pl line 32, <GEN1> line 2. $

Enjoy, Have FUN! H.Merijn
  • Comment on Re: DBD::CSV::st execute failed: Can't locate object method "do_err" via package "SQL::Statement::Function::NumericEval"
  • Select or Download Code

Replies are listed 'Best First'.
Re^2: DBD::CSV::st execute failed: Can't locate object method "do_err" via package "SQL::Statement::Function::NumericEval"
by Sandy_Bio_Perl (Beadle) on Jul 08, 2016 at 09:22 UTC

    Thank you, brother Tux. Apologies for my sloppy coding. It had developed it over a period of time and had forgotten to take out redundant lines. I appreciate the time and effort you put into to reading and fixing it.

    However, as you noted, the sloppiness of my coding was not cause of the error. Top marks to brother BaldManTom (below) for providing a solution.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1167408]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (4)
As of 2024-04-20 01:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found