SQLite LinuxWindowsmacOS

SQLite: disk I/O error

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

Ошибка ввода-вывода: нехватка места, проблемы диска или сетевая ФС. Проверьте место, права и целостность PRAGMA integrity_check.

В этой статье
  1. Что означает ошибка
  2. Причины и признаки
  3. Пошаговое решение
  4. Если проблема осталась

#Что означает ошибка

Сообщение
disk I/O error

Ошибка ввода-вывода: нехватка места, проблемы диска или сетевая ФС. Проверьте место, права и целостность PRAGMA integrity_check.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Нет местаdf -h или df -i показывает заполненный томОсвободить место без удаления файлов базы
Сетевая ФСБаза открыта на NFS/SMB, записи и блокировки нестабильныИспользовать локальный диск сервера
Сбой дискаЖурнал ОС фиксирует I/O-ошибки устройстваСохранить данные и проверить накопитель
Права на tempКаталог не позволяет создать журнальный файлПроверить права сервисной учётной записи

#Пошаговое решение

  1. Остановите запись и сделайте безопасную копиюSQLITE_IOERR означает проблему обращения к файлу или устройству, а не обязательно порчу схемы. Если приложение пишет в базу, сначала остановите его штатно и убедитесь, что нет активных подключений. Сделайте резервную копию согласованным способом: через SQLite API backup или команду .backup backup.db в утилите sqlite3 при доступной базе. В режиме WAL не копируйте один файл .db, игнорируя соседний -wal: в нём могут оставаться неподтверждённые в основном файле страницы.
  2. Проверьте место, файловую систему и праваНа Linux откройте терминал сервера и выполните df -h и df -i для проверки свободных блоков и inode; командой ls -ld проверьте права каталога с базой, потому что SQLite создаёт рядом временные и журнальные файлы. На Windows откройте Проводник → «Этот компьютер» и проверьте свободное место на нужном диске и доступность каталога для учётной записи службы. Если системный журнал фиксирует I/O-ошибки или SMART сообщает сбои, прекратите запись и сначала спасайте данные.
  3. Проверьте целостность на копии и устраните источникНа рабочей копии выполните sqlite3 backup.db "PRAGMA integrity_check;" — нормальный вывод ok. При ошибках не запускайте бесконтрольное восстановление на единственной базе: проверьте последнюю рабочую резервную копию, состояние носителя и версию SQLite. На сетевых и синхронизируемых каталогах файловые блокировки могут работать ненадёжно; при возможности перенесите базу на локальный диск сервера, согласовав остановку приложения и путь подключения.
  4. Верните приложение к работе с контролем результатаПосле устранения нехватки места или неисправного хранилища запустите приложение и повторите чтение и запись небольшой тестовой записи, не нарушающей структуру данных. Если disk I/O error повторяется, соберите расширенный код SQLite (SQLITE_IOERR_*), точное имя файла, путь, журналы ОС и сведения о файловой системе. Не удаляйте вручную -wal, -shm и файл базы для «исправления».

#Если проблема осталась

Если «SQLite: disk I/O error» повторяется, сохраните время, состояние подключения и точный текст ошибки. Не меняйте сразу несколько настроек — иначе станет трудно понять, какое действие повлияло на результат.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.