Я не хочу воскрешать мертвых, но я только что столкнулся с этой проблемой, и популярные ответы, которые я нашел, неприменимы.
Моя проблема оказалась надстройкой SQLite Manager для Firefox. Я использовал программу «обработки» SysInternals, чтобы определить, что a) Firefox / SQLiteManager имел (я предполагаю) открытую транзакцию, и б) каждый раз, когда я использовал надстройку для подключения к базе данных, она не уничтожала предыдущую, который больше не был доступен.
Я вышел из Firefox, и мой код работал нормально. Я снова загрузил Firefox и SQLite Manager, но не начал транзакцию; опять мой код работал нормально. Мой код был Python, а не RoR.
Я бы порекомендовал этот ответ, и исходный вопрос был бы помечен как [sqlite3]. Это определенно не относится к RoR.