http://qs321.pair.com?node_id=619516


in reply to Upgraded SQLite: "database changed" error

It is indeed an interaction between Ima::DBI's use of prepare_cached and SQLite's changed error. Invalidating the $dbh->{CachedKids} is a passable work-around. I tried and failed to globally turn caching off in Ima::DBI::set_sql, but that probably would have caused performance issues anyway. I'm still not sure exactly which change revealed this problem.

DBD::SQLite seems to be the correct place to address this issue. Does anyone else have an opinion on that matter? Is there a better forum for DBD::SQLite discussions? The only other seems to be RT.
$dbh->{CachedKids} = {}; # after ANALYZE or similar # from the example $dbh->prepare_cached('select "hello" from a'); print Dump $dbh->{CachedKids},"\n"; $dbh->{CachedKids} = {}; $dbh->do("analyze"); my $sth = $dbh->prepare_cached('select "hello" from a'); print "got ", $dbh->selectrow_array($sth), "\n";
A section of the DBI_TRACE from my main application
T <- prepare_cached('SELECT me.id FROM step me WHERE ( me.message = ? ) ' undef ...)= DBIx::ContextualFetch::st=HASH(0x8e09f38) at DBI.pm line + 381 T <- FETCH('Active')= '' at DBI.pm line 1139 T <- FETCH('Taint')= 1 at ContextualFetch.pm line 50 <- STORE('Taint' 0)= 1 at ContextualFetch.pm line 51 !! ERROR: 1 'database schema has changed(1) at dbdimp.c line 421' +(err#0) <- execute('Removing duplicates')= undef at ContextualFetch.pm lin +e 52 ERROR: 1 'database schema has changed(1) at dbdimp.c line 421' +(err#0) <> FETCH('Statement')= 'SELECT me.id FROM step me WHERE ( me.message = ? ) ' ('Statement' from cache) at DBI.pm line 1143 Val::Step can't SELECT me.id FROM step me WHERE ( me.message = ? ) : DBD::SQLite::st execute failed: database schema has changed(1) at db +dimp.c line 421 [for Statement "SELECT me.id FROM step me WHERE ( me.message = ? ) "] at /usr/share/perl5/DBIx/ContextualFetch.pm line 52. at bin/validate.pl line 196

Replies are listed 'Best First'.
Re^2: Upgraded SQLite: "database changed" error
by jZed (Prior) on Jun 06, 2007 at 05:48 UTC
    The dbi-users@perl.org mailing list is an appropriate place to discuss changes to DBDs and the most likely place other than rt.cpan.org for DBD authors to see your suggestions. Also, there may be similar issues with other DBDs so posting to the list might pull in some other ideas.