I've faced this problem before and the only solution I found to work besides encoding the data was to prepare the statement and specifically bind the data as a blob. So now your code would look like this:
#!/usr/bin/perl use warnings; use strict; use Storable qw(freeze thaw); use DBI "SQL_BLOB"; my $dbh = DBI->connect("dbi:SQLite:dbname=testlib.db","","",{RaiseErro +r => 1}); my @books=( { 'ISBN' => '0596004788', 'Title' => 'Learning Perl Objects, References, and Mod +ules' }, { 'ISBN' => '0596001320', 'Title' => 'Learning Perl, Third Edition' }, { 'ISBN' => '0596003137', 'Title' => 'Perl Cookbook, Second Edition' }, ); my $book_list = freeze(\@books); my $sth = $dbh->prepare("INSERT INTO BOOKS (BOOK) values (?)"); $sth->bind_param(1,$book_list,SQL_BLOB); $sth->execute; $sth->finish; $sth = $dbh->prepare( 'select * from BOOKS' ); $sth->execute(); my $book= $sth->fetchrow_array ; my $new_list = thaw($book); foreach(@{$new_list}) { print "$_->{'ISBN'} $_->{'Title'}\n"; } __END__ 0596004788 Learning Perl Objects, References, and Modules 0596001320 Learning Perl, Third Edition 0596003137 Perl Cookbook, Second Edition
In reply to Re: Problems with storable and Sqlite
by antirice
in thread Problems with storable and Sqlite
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |