0

我正在创建数据库

sqlite3 database 
    create table if not exists entries (
        id integer primary key autoincrement,
        title string not null,
        text string not null
    );
    ^D

我应该把这个数据库放在哪里?后

  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'),
    };
  };

在“desk”附近收到错误运行时错误:/home/ultramozg/App/lib/App.pm 第 40 行第 16 行的语法错误

我的错是什么?

4

2 回答 2

2

我强烈建议您使用 Dancer::Plugin::Database 而不是您建议的 connect_db 例程。你这样做的方式可能会创建剩余的开放连接,因此会产生各种问题。Dancer::Plugin::Database 为您处理持久连接。插件文档:

https://metacpan.org/pod/Dancer::Plugin::Database

一旦你安装了 Dancer::Plugin::Database 并在 config.yml 中配置它,那么每当你需要一个数据库句柄时,你只需:

my $dbh => database('my_database_name');

完成后不要打扰断开连接。

如果您使用的是 ubuntu,只需:

apt-get install libdancer-plugin-database-perl

祝你的项目好运!

于 2013-09-23T20:34:55.257 回答
0

对于初学者,您有一个 ^D 字符-第一部分的最后一行。请学习阅读输出。它告诉你第 16 行。

检查代码中出现“desk”一词的位置。

于 2013-09-21T13:30:43.543 回答