I have a MySQL/Perl Dancer [http://perldancer.org] powered web app. Actually, 
two web apps.

The user goes to app A [http://teststrata.geology.wisc.edu/macromap] which 
serves up a Google maps base layer. On document ready, it makes two jQuery ajax 
calls to app B [http://teststrata.geology.wisc.edu/mstrat/] like so

        http://teststrata.geology.wisc.edu/mstrat/points.json
        http://teststrata.geology.wisc.edu/mstrat/polys.json

App B queries the MySQL database via DBI, and serves up json packets of points 
and polys that are rendered in the user's browser.

Both apps are proxies through Apache to Perl Starman running via plackup. From 
time to time, I start getting errors back from the second app. The initial 
symptoms were

        {"error":"Warning caught during route execution: DBD::mysql::st 
        fetchall_arrayref failed: fetch() without execute() at 
<path/to>/macrostrat.pm line 79.\n"}

The offending lines are

        71> my $sql = qq{
        72>     ..
        73>
        74>
        75> };
        76> 
        77> my $sth = $dbh->prepare($sql);
        78> $sth->execute();
        79> my $res = $sth->fetchall_arrayref({});

This is bizarre... how can execute() not take place above? Perl doesn't have a 
habit of jumping over lines, does it? So, I turned on DBI_TRACE

        $DBI_TRACE=2=logs/dbi.log plackup -E production -p 5001 -s Starman -w 
10 -a bin/app.pl

And, following is what stood out to me as the potential culprit in the log file

        > Handle is not in asynchronous mode error 2000 recorded: Handle is 
        > not in asynchronous mode
        >    !! ERROR: 2000 CLEARED by call to fetch method

What is going on?

Many thanks in advance... this is my first posting on this board.

Puneet.

Reply via email to