gpt4 book ai didi

sqlite - SQLite“Drop table”错误消息:“SQL逻辑错误或数据库丢失”

转载 作者:行者123 更新时间:2023-12-03 18:40:32 24 4
gpt4 key购买 nike

我在内存中运行SQLite数据库,并且尝试使用以下命令删除表。

DROP TABLE 'testing' ;


但是当我执行SQL语句时,出现此错误

SQL logic error or missing database


在运行“ Drop Table”查询之前,请检查以确保该查询表存在于数据库中。因此,我非常确定该表存在并且与数据库建立了连接。

SELECT count(*) FROM sqlite_master WHERE type='table' and name='testing';


该数据库已从文件数据库加载到内存中,在我尝试删除此表后,数据库已从内存保存到文件系统中。然后,我可以使用第三方SQLite实用程序查看SQLite文件,并检查是否存在“测试”。使用相同的第三方SQLite实用程序,我可以运行“ Drop TABLE” SQL语句而不会出错。

我能够创建/更新表而没有任何问题。

我的问题:


删除表时,SQLite中的内存数据库和文件数据库之间有区别吗?
有没有办法禁用我可能以某种方式特别强调的在SQLite中删除表的功能?


编辑:它似乎与锁定表有关。仍在调查中。

最佳答案

在版本3.7.2中将Sqlite与xerial jbdc驱动程序一起使用时,我遇到了相同的问题。和JRE7
我首先使用select命令列出了所有表,如下所示:

SELECT name FROM sqlite_master WHERE type='table'


然后尝试删除这样的表:

DROP TABLE IF EXISTS TableName


我正在处理存储在文件系统上的数据库,因此似乎不会影响结果。
我使用 IF EXISTS命令来避免首先列出主表中的所有表,但是无论如何我都需要完整的表列表。

对我而言,解决方案只是更改 SELECTDROP的顺序。

关于sqlite - SQLite“Drop table”错误消息:“SQL逻辑错误或数据库丢失”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5394969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com