2011-03-22 81 views
1

我正在內存中運行SQLite數據庫,並試圖使用以下命令刪除表。SQLite「Drop table」錯誤消息:「SQL邏輯錯誤或缺少數據庫」

DROP TABLE 'testing' ; 

但是,當我執行SQL語句,我得到這個錯誤

SQL logic error or missing database 

之前,我跑了「刪除表」查詢我檢查,以確保該表在數據庫中存在與此查詢。所以我很確定表存在,並且我有一個到數據庫的連接。

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

該數據庫中存儲從文件數據庫加載後,我嘗試刪除該表的數據庫從內存中保存到文件系統。然後,我可以使用第三方SQLite實用程序查看SQLite文件並檢查「測試」是否存在。使用相同的第三方SQLite實用程序,我能夠運行「Drop TABLE」SQL語句而不會出錯。

我能夠創建/更新表沒有任何問題。

我的問題:

  • 是否有內存數據庫和刪除表時SQLite中一個文件數據庫之間的差異?
  • 是否有一種方法可以禁用在SQLite中刪除表格的功能,我可能會以某種方式重複打開該表格?

編輯:它似乎與鎖定表有關。仍在調查。

回答

1

我在V3.7.2中使用Sqlite和xerial jbdc驅動程序時遇到了同樣的問題。和JRE7 我首先列出所有與選擇命令表如下:

SELECT name FROM sqlite_master WHERE type='table' 

,然後試圖刪除這樣的表:

DROP TABLE IF EXISTS TableName 

我正在存儲的文件的數據庫上系統,所以它似乎不影響結果。 我使用了IF EXISTS命令來避免首先列出主表中的所有表,但我仍然需要完整的表列表。

對我來說,解決方案只是改變SELECTDROP的順序。

2

在DROP TABLE命令中不應該有引號。改爲:

DROP TABLE testing 
+0

糟糕,實際版本中沒有引號。我將它們添加到了問題中,以使事情變得清晰,但我想這隻會讓事情變得更加複雜。編輯問題並刪除引號。 – 2011-03-30 18:58:16

相關問題