当前位置:  开发笔记 > 编程语言 > 正文

为什么$ dbh-> do('VACUUM')失败了Perl的DBD :: SQLite?

如何解决《为什么$dbh->do('VACUUM')失败了Perl的DBD::SQLite?》经验,为你挑选了1个好方法。



1> Sinan Ünür..:

我假设你有AutoCommit => 0连接通话,因为以下工作:

#!/usr/bin/perl

use strict;
use warnings;

use DBI;

my $dbh = DBI->connect('dbi:SQLite:test.db', undef, undef,
    { RaiseError => 1, AutoCommit => 1}
);

$dbh->do('VACUUM');

$dbh->disconnect;

你不必放弃交易能够VACUUM:您可以使用这样下AutoCommit被开启VACUUM和之后VACUUMAutoCommit状态恢复到不管它是什么.如果未设置,请添加错误检查RaiseError.

sub do_vacuum {
    my ($dbh) = @_;
    local $dbh->{AutoCommit} = 1;
    $dbh->do('VACUUM');
    return;
}

叫它:

do_vacuum($dbh);


+1建议`local $ dbh - > {AutoCommit} = 1;`并省去`$ ac`变量.
推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有