Sqlite3 fts4 "таблица базы данных ошибок заблокирована"

Ubuntu 16.04, Lazarus 1.8.2, SQLite 3.11 (все в актуальном состоянии)

Раньше это работало нормально примерно месяц назад, и только сейчас у меня есть свободное время, чтобы разобраться в этом.

Я чаще всего получаю сообщение «таблица базы данных ошибок заблокирована» и проверил страницы SQLite, и две причины, которые они приводят для этого сбоя, неприменимы.

Иногда я получаю сообщение об ошибке «vtable constructor failed: tFind», что, как мне кажется, является реальной основной проблемой, поскольку при переходе через него происходит сбой в строке ExecSQL.

Какие-нибудь мысли? Я использую следующий код

const fldsEmails = ' fldActive, fldFrom, fldTo ';

sqlStr:='CREATE VIRTUAL TABLE IF NOT EXISTS tFind USING FTS4('+fldsEmails+');';
dm.sqlFind.SQL.Text:=sqlStr;
dm.sqlFind.ExecSQL;

Открыта ли БД во время разработки в среде IDE? Если это так, это может быть источником проблемы, поскольку то, что вы пытаетесь сделать во время выполнения, может потребовать, чтобы Sqlite получил эксклюзивную блокировку для БД. Возможно, он не может этого сделать, если БД открывается в среде IDE.

MartynA 10.08.2018 16:40

@MartynA: Спасибо за комментарий, но нет. Я пробовал закрыть перед вызовом «создать». Кроме того, это происходит при работе как автономной программы вне среды IDE.

LinuxFerLife 11.08.2018 15:03

Я определенно столкнулся с этой проблемой несколько месяцев назад, когда пробовал Ubuntu. и кое-что, что я погуглил (я думаю, из wibsite fpc), предоставило простое исправление. Я посмотрю, смогу ли я повторить свои шаги.

MartynA 11.08.2018 16:34

@MartynA: Спасибо, я тоже буду продолжать поиск, но я ценю вашу помощь.

LinuxFerLife 11.08.2018 18:47
0
4
68
0

Другие вопросы по теме