我正在内存中运行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语句,但没有错误。
我可以毫无问题地创建/更新表格。
我的问题:
编辑:它似乎与锁定的表格有关。还在调查。
答案 0 :(得分:2)
您的DROP TABLE命令中不应该有引号。请改用:
DROP TABLE testing
答案 1 :(得分:1)
在版本3.7.2中使用带有xerial jbdc驱动程序的Sqlite时遇到了同样的问题。和JRE7 我首先使用select命令列出所有表,如下所示:
SELECT name FROM sqlite_master WHERE type='table'
然后尝试删除这样的表:
DROP TABLE IF EXISTS TableName
我正在处理存储在文件系统上的数据库,因此似乎不会影响结果。
我使用IF EXISTS
命令来避免首先列出主表中的所有表,但我还是需要完整的表列表。
对我来说,解决方案只是更改SELECT
和DROP
的顺序。