I've been looking most of the day for a script like the one in Example 1 (converting adjacency list to nested set) to fix a mysql table that I fubared this morning.
Fortunately, I had the foresight to track parent id's as well as record left and right id's thinking I might need to repair a mistake sometime. Unfortunately, I can't get the script in Example 1 to run correctly.
The error I get is:
DBD::mysql::st fetchrow_array failed: fetch() without execute() at ./fixnest line 33.
I have determined error occurs once the script begins to process a leaf node -- one that does not have any children. After that, I confess I am stumped, this being my first exposure to the DBI module.
Has anyone else encountered this problem? If so, is there a workaround to suggest? At the very least, is there a confirmed case of the script above working (perhaps there is a line left out in the published version)?
Thanks in advance for any help -- feel free to write direct to geestarr at the domain geedev dot com. I'll summarize any solutions here.
Showing messages 1 through 3 of 3.
fetch() without execute() error in Example 1
2003-06-15 11:49:37
anonymous2
[View]
Aaron generously offered a solution via email:
In the script, replace the following line:
while(my ($id) = $children->fetchrow_array) {
With this:
for my $row (@{$children->fetchall_arrayref}) {
my ($id) = @$row;
Thanks, Aaron!
fetch() without execute() error in Example 1
2004-01-11 11:31:44
anonymous2
[View]
It took several days(more than a week) on a pentium-4 freebsd machine to run this code for entire ncbi taxonomy. Is there anything I should check with my MySql or table structure? I have indexed the taxon_id and the parent_id.
fetch() without execute() error in Example 1
2006-02-06 10:55:01
Aaron Mackey |
[View]
The $children statement needs an additional clause, as follows:
my $children = $dbh->prepare("SELECT id
FROM taxon
WHERE parent_id = ?
AND id <> parent_id");
In the script, replace the following line:
while(my ($id) = $children->fetchrow_array) {
With this:
for my $row (@{$children->fetchall_arrayref}) {
my ($id) = @$row;
Thanks, Aaron!