Python3 + sqlite3. Почему перестаёт работать insert?
Я написал скрипт на Python3, который в цикле осуществляет INSERT в БД SQLite3. Каждая загружаемая строка несёт в себе BLOB с графической информацией.
Суть проблемы: сначала инсерты осуществляются без каких-либо замечаний. Но где-то на 40% работы цикла (вернее, на 40% загруженной информации) внезапно появляется ошибка:
sqlite3.OperationalError: disk I/O error
Появляется она именно на моменте, когда скрипт пытается сделать очередной инсерт.
Дальнейшие попытки запуска скрипта приводят к той же ошибке.
Известно, что база каким-то образом переходит в режим Read-only, хотя в моём коде нет ни одной строки, которая даёт такую команду. Иными словами, база автоматически переходит в этот режим.
Если что, объём файла базы чуть больше 296 гигабайт. Может, у sqlite есть предел объёма?
alekseiami, хммм. Ну вообще лимит и впрямь есть, но по дефолту он вроде около терабайта. Впрочем, я бы задолго до этого задумался о переходе на другую СУБД...
alekseiami, может, побить базу на куски? В SQLite нет партишинга, но можно же извратиться и насоздавать баз под каждый чих и базу, в которой ссылаться на нужную базу…
alekseiami, Конечно, будет сложно поддерживать консистентность базы, будут проблемы со сквозным индексом и т.п., но раз уж условие стоять на одной ноге, а второй чесать за ухом, то уж чего теперь…