ошибка ввода-вывода на диске с SQLite VACUUM - PullRequest
0 голосов
/ 28 ноября 2011

У меня проблема с БД SQLite, к которой я обращаюсь через программу Perl.Я могу использовать команды INSERT и DELETE, но не VACUUM, что приводит к ошибке: «ошибка ввода-вывода диска».

Если я запускаю программу от имени пользователя root, у меня не возникает проблем, поэтому я полагаю, что это должно быть какое-то разрешениевопрос.Я проверил разрешения для каждого файла, участвующего в процессе, и все должно быть в порядке.Я действительно не понимаю.Команда VACUUM выполняет операции ввода-вывода вне каталога БД?

Заранее спасибо за вашу помощь.С уважением,

my $dbh = DBI->connect("dbi:SQLite:someDB.db", undef, undef, {RaiseError => 1, AutoCommit => 1});
my $sth = $dbh->prepare("VACUUM;");
$sth->execute;

1 Ответ

2 голосов
/ 28 ноября 2011

Если вы хотите увидеть операции ввода-вывода, которые выполняются во время VACUUM, вы можете использовать strace . В нем будут перечислены все системные вызовы, выполненные SQLite, включая дисковый ввод-вывод.

strace sqlite3 someDB.db 'VACUUM;'
...