The versions of SQLite that you used to create the DB, and the one that Perl is using to access it must be at least a close match. I have had exactly the same problem as you are getting when they are not.
Additional Information:
I was using DBD::CSV at first and everything was working beautifully. I then got the bright idea to use SQLite. After the initial connection code, is there any difference in how to execute queries? Here is how I accessed db with CSV...
$vquery = "SELECT * FROM mytable WHERE myfield = 2";
$vsth = $dbh->prepare($vquery);
$vsth->execute();