Сообщение об ошибке «Удалить таблицу» SQLite: «Ошибка логики SQL или отсутствует база данных» - PullRequest
1 голос
/ 22 марта 2011

Я использую базу данных SQLite в памяти и пытаюсь удалить таблицу с помощью следующей команды.

DROP TABLE 'testing' ;

Но когда я выполняю инструкцию SQL, я получаю эту ошибку

SQL logic error or missing database

Перед запуском запроса «Удалить таблицу» я проверяю, существует ли таблица в базе данных с этим запросом. Поэтому я уверен, что таблица существует, и у меня есть соединение с базой данных.

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

Эта база данных загружается в память из файловой базы данных, и после того, как я пытаюсь удалить эту таблицу, база данных сохраняется из памяти в файловую систему. Затем я могу использовать стороннюю утилиту SQLite, чтобы просмотреть файл SQLite и проверить, существует ли «тестирование». Используя ту же самую стороннюю утилиту SQLite, я могу выполнить инструкцию SQL «Drop TABLE» без ошибок.

Я могу создавать / обновлять таблицы без проблем.

Мои вопросы:

  • Есть ли разница между базой данных памяти и файловой базой данных в SQLite при удалении таблицы?
  • Есть ли способ отключить возможность отбрасывать таблицу в SQLite, которую я, возможно, как-то акцентно включил?

Редактировать: Похоже, что-то связано с заблокированной таблицей. Все еще расследую.

Ответы [ 2 ]

2 голосов
/ 30 марта 2011

В вашей команде DROP TABLE не должно быть кавычек.Используйте это вместо:

DROP TABLE testing
1 голос
/ 31 августа 2011

У меня была такая же проблема при использовании Sqlite с драйвером xerial jbdc в версии 3.7.2.и JRE7 Сначала я перечислил все таблицы с помощью команды select следующим образом:

SELECT name FROM sqlite_master WHERE type='table'

А затем попытался удалить таблицу следующим образом:

DROP TABLE IF EXISTS TableName

Я работал над сохраненной базой данныхв файловой системе и поэтому, похоже, не влияет на результат.Я использовал команду IF EXISTS, чтобы сначала не выводить всю таблицу из главной таблицы, но мне все равно нужен был полный список таблиц.

Для меня решение было просто изменить порядок SELECT иDROP.

...