Padre抱怨SQLite数据库问题

时间:2016-01-14 10:45:59

标签: perl sqlite ubuntu-14.04 padre

我从perl开始,想在Ubuntu 14.04上安装IDE PadreThe answers in this question表示我可以使用apt-get

sudo apt-get install padre

我还尝试用以下方法安装它:

sudo cpan Padre

如所示here

但是,当我运行padre时,它会给我以下错误:

DBD::SQLite::db selectall_arrayref failed: attempt to write a readonly database at (eval 1905) line 41.
Perl exited with active threads:
    1 running and unjoined
    0 finished and unjoined
    0 running and detached

当我以root(sudo padre)运行时:

DBD::SQLite::db do failed: Safety level may not be changed inside a transaction at (eval 1905) line 37.
Perl exited with active threads:
    1 running and unjoined
    0 finished and unjoined
    0 running and detached

padre --version告诉我:Perl Application Development and Refactoring Environment 1.00,我的perl版本是5.18.2。

/usr/bin/padre脚本中,我没有看到任何对SQLite数据库的引用。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

最后我在this bug report找到了解决方案。在Locker.pm文件中(位于我/usr/share/perl5/Padre的系统中),应更改以下功能(第102行):

sub db_increment {
    my $self = shift;
    unless ( $self->{db_depth}++ ) {
        Padre::DB->begin;    
        # ...
        Padre::DB->pragma( synchronous => 0 );
    }
    return;
}

为:

sub db_increment {
    my $self = shift;
    unless ( $self->{db_depth}++ ) {
        #...
        Padre::DB->pragma( synchronous => 0 );
        Padre::DB->begin;
    }
    return;
}

即。更改Padre::DB->pragmaPadre::DB->begin的顺序。

这允许我以root(padre)开始sudo,为了解决这个问题,我必须更改Padre配置的所有者。我使用chown更改了对用户的权限:

sudo chown -R myuser:myuser /.local/share/.padre/