in reply to How should I handle $sth->execute() errors?

You should consider using RaiseError when you connect like ...
my $dbh = DBI->connect("dbi:SQLite:dbname=request_db","","", {RaiseErr +or => 1});

Now you will not have to check for errors after every dbi method you call. Your code would then be something like ...
my $dbh; eval { $dbh = DBI->connect("dbi:SQLite:dbname=request_db","","", {RaiseErr +or => 1}); $dbh->do($createTableSQL); }; if ($@) { # handle error here # the error will be in the $@ variable # the error raised could be from the connect or the do methods }

Note that I change your prepare/execute/finish to just a do.
This is more concise way of executing DDL statements.