Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl Padre抱怨SQLite数据库问题_Perl_Sqlite_Ubuntu 14.04_Padre - Fatal编程技术网

Perl Padre抱怨SQLite数据库问题

Perl Padre抱怨SQLite数据库问题,perl,sqlite,ubuntu-14.04,padre,Perl,Sqlite,Ubuntu 14.04,Padre,我从perl开始,希望在Ubuntu 14.04上安装IDE。 指示我可以简单地使用apt-get: sudo apt-get install padre 我还尝试使用以下工具安装它: sudo cpan Padre 如图所示 但是,当我运行padre时,会出现以下错误: DBD::SQLite::db selectall_arrayref failed: attempt to write a readonly database at (eval 1905) line 41. Perl ex

我从perl开始,希望在Ubuntu 14.04上安装IDE。 指示我可以简单地使用
apt-get

sudo apt-get install padre
我还尝试使用以下工具安装它:

sudo cpan Padre
如图所示

但是,当我运行
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运行它时(
sudopadre
):

padre--version
向我展示了:
Perl应用程序开发和重构环境1.00
,我的Perl版本是5.18.2


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

我终于在中找到了解决方案。在文件
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;
}
致:

i、 e.更改
Padre::DB->pragma
Padre::DB->begin
的顺序

这允许我以root(
sudo
)身份启动
padre
),要解决这个问题,我必须更改padre配置的所有者。我使用
chown
更改了用户的权限:

sudo chown -R myuser:myuser /.local/share/.padre/
sub db_increment {
    my $self = shift;
    unless ( $self->{db_depth}++ ) {
        #...
        Padre::DB->pragma( synchronous => 0 );
        Padre::DB->begin;
    }
    return;
}
sudo chown -R myuser:myuser /.local/share/.padre/