Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
SQLITE3FTS4“;错误:数据库表已锁定";_Sqlite_Virtual_Lazarus - Fatal编程技术网

SQLITE3FTS4“;错误:数据库表已锁定";

SQLITE3FTS4“;错误:数据库表已锁定";,sqlite,virtual,lazarus,Sqlite,Virtual,Lazarus,Ubuntu 16.04、Lazarus 1.8.2、SQLite 3.11(所有内容都是最新的) 在大约一个月前,这项技术一直运作良好,直到现在我才有空闲时间来解决这个问题 我主要得到“错误数据库表被锁定”,并检查了SQLite页面,它们给出的两个崩溃原因不适用 有时,我会遇到一个错误“vtable constructor failed:tFind”,我认为这是真正的根本问题,因为在执行时,它在ExecSQL行崩溃 有什么想法吗?我正在使用以下代码 const fldsEmails = ' f

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中的设计时打开了DB?如果是这样,那么这可能是问题的根源,因为您在运行时尝试执行的操作可能需要Sqlite在DB上获得独占锁。如果数据库在IDE中打开,它可能无法做到这一点。@MartynA:谢谢你的评论,但是没有。我在“创建”调用之前已经尝试过关闭数据库。另外,当在IDE之外作为一个独立程序运行时,也会发生这种情况。几个月前,我在试用Ubuntu时肯定遇到了这个问题。我在谷歌上搜索的东西(我想是从fpc wibsite上搜索的)提供了一个简单的修复。我会看看我是否能回到过去。@MartynA:谢谢,我也会继续搜索,不过我很感谢你的帮助。