Да, это старый вопрос, и здесь уже есть много ответов. Но ни один из них не помог мне, а это означало, что мне потребовалось много времени, чтобы наконец понять проблему. Я нашел то, что сработало, и поделюсь им, если это может вызвать у вас проблему.
Я использовал браузер SQLITE (это браузер базы данных с графическим интерфейсом). Я буду называть его «GUI» здесь (чтобы избежать путаницы с браузером слова, являющимся вашим браузером localhost :: 8000 chrome или любым другим.
http://sqlitebrowser.org/
Я следил за тем, что записывалось в базу данных, и открыл графический интерфейс, когда мое приложение rails работало в моем браузере chrome. Я бы обновил графический интерфейс, чтобы увидеть, добавляет ли он данные так, как я ожидал.
Что касается отладки, я решил удалить строку из графического интерфейса SQLite, чтобы понять, будет ли мое приложение правильно реагировать на отсутствующую строку.
Как выясняется, браузер SQLite на самом деле не удаляет строку (что вызвало у меня замешательство по поводу того, почему мое приложение функционировало так, как будто строка все еще была там, даже если визуально отсутствовало на GUI). В любом случае, после 30 минут разочарования я закрыл графический интерфейс SQLite, а затем получил уведомление с вопросом, хочу ли я сохранить внесенные в базу данных изменения. Я наивно нажал «Нет» и закрыл приложение.
Очевидно, что происходит то, что графический интерфейс затем заблокировал базу данных, потому что в моей базе данных были строки, которые были "мягко удалены" без фиксации удаления. Таким образом, GUI (из-за отсутствия лучшего термина) содержал базу данных в Limbo.
Это объясняет, почему a) мое приложение не работало так, как будто отсутствовала строка, потому что оно еще не было удалено, а B) объясняет, почему база данных заблокирована. Он все еще ждал, когда я совершу удаление.
Итак, чтобы решить проблему, я просто снова открыл графический интерфейс и удалил ту же строку, а затем закрыл графический интерфейс, и в этот раз я щелкнул «Да» при запросе сохранения изменений в базе данных . Он сохранил удаление и разблокировал базу данных, и теперь мое приложение работает!
Надеюсь, это поможет кому-то еще, у которого может быть та же проблема, но с использованием графического интерфейса браузера SQLite. Это может быть то, что блокирует вашу базу данных.