0
sub connect_db {
       my $dbh = DBI->connect("dbi:SQLite:dbname=".setting('database')) or
               die $DBI::errstr;

       return $dbh;
}

sub init_db {
       my $db = connect_db();
       my $schema = read_file('./schema.sql');
       $db->do($schema) or die $db->errstr;
}


get '/' => sub {
       my $db = connect_db();
       my $sql = 'select id, title, text from entries order by id desc';
       my $sth = $db->prepare($sql) or die $db->errstr;
       $sth->execute or die $sth->errstr;
       template 'show_entries.tt', {
               'msg' => get_flash(),
               'add_entry_url' => uri_for('/add'),
               'entries' => $sth->fetchall_hashref('id'),
       };
};

为什么重新启动后数据库中的系统条目没有保存?大小数据库不增加。为什么会这样?

4

1 回答 1

0

您可能正在使用的示例脚本https://github.com/PerlDancer/dancer-tutorial/blob/master/dancr.pl在默认临时目录中显式创建数据库文件:

set 'database' => File::Spec->catfile(File::Spec->tmpdir(), 'dancr.db');

可能您的系统配置为在重新启动后清理 /tmp(或任何临时目录),或者 /tmp 可能位于内存文件系统上。

如果你想要一个持久的数据库,那么改变数据库的位置。

于 2013-09-22T18:26:47.820 回答