preload
мая 05

Столкнулся я тут с таким вот сообщением при работе с sqlite3:
SQL error: disk I/O error

Причина ошибки была в том, что sqlite почему-то не хватало места для временных файлов, хотя его было предостаточно. Чуть покопавшись в документации, нашел вот такую табличку:

SQLITE_TEMP_STORE=<значение от 0 до 3>

Опция указывает, где будут храниться временные данные – в оперативной памяти или на диске. Значения опции при компиляции:

SQLITE_TEMP_STORE Значение
0 Всегда использовать временные файлы
1 По умолчанию использовать временные файлы, значение может быть изменено при помощи команды PRAGMA temp_store
2 По умолчанию использовать оперативная память, значение может быть изменено при помощи команды PRAGMA temp_store
3 Всегда использовать оперативную память

По умолчанию значение равно 1. Дополнительную информацию читаем в документации.

Перекомпилил sqlite c -DSQLITE_TEMP_STORE=3 и все заработало как надо.

Связанные записи


Метки: