RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.
Результат и коды ошибок

Обзор

Многие функции в SQLite возвращают числовой результат, который кодирует указание на любую успешность или неуспешность, и в случае неудачи обеспечиваеи некоторую идею причины неудачи. Этот документ стремится объяснить, что каждый из тех числовых результатов кодирует.

1. Результат и коды ошибок

"Коды ошибок" это подмножество "кодов результата", которые указывают, что что-то пошло не так, как надо. Есть только несколько неошибочных кодов результата: SQLITE_OK, SQLITE_ROW и SQLITE_DONE. Термин "код ошибки" означает любой код результата кроме этих трех.

2. Основные коды результата против расширенных кодов результата

Коды результата это signed 32-bit integer. Младшие значащие 8 битов кода результата определяют широкую категорию и названы "основным кодом результата". Старшие биты обеспечивают более подробную информацию об ошибке и названы "расширенным кодом результата".

Обратите внимание на то, что основной код результата всегда часть расширенного кода результата. Учитывая продленный код результата в полных 32 бита, применение может всегда находить соответствующий основной код результата, просто извлекая младшие значащие 8 битов расширенного кода результата.

Все расширенные коды результата это также коды ошибок. Следовательно, термины "продленный код результата" и "расширенный код ошибки" взаимозаменяемые.

Для исторической совместимости интерфейсы языка C возвращают основные коды результата по умолчанию. Расширенный код результата для новой ошибки может быть восстановлен, используя sqlite3_extended_errcode(). sqlite3_extended_result_codes() может использоваться, чтобы поместить соединение с базой данных в режим, где это сразу возвращает расширенные коды результата вместо основных кодов результата.

3. Определения

Все коды результата integer. Символьные имена для всех кодов результата создаются, используя макрос "#define" в файле заголовка sqlite3.h. Есть отдельные участки в заголовочном файле sqlite3.h для кодовых определений результата и расширенных кодовых определений результата.

Основные кодовые символьные имена результата имеют форму "SQLITE_XXXXXX", где XXXXXX это последовательность заглавных буквенных символов. Расширенные кодовые названия результата имеют форму "SQLITE_XXXXXX_YYYYYYY", где часть XXXXXX это соответствующий основной код результата, и YYYYYYY это расширение, которое далее классифицирует код результата.

Имена и числовые значения для существующих кодов результата фиксируются и неизменны. Однако, новые коды результата и особенно новые расширенные коды результата, могли бы появиться в будущих выпусках SQLite.

4. Основной кодовый список результата

31 код результата определяется в sqlite3.h и перечисляется в алфавитном порядке ниже:

5. Расширенный кодовый список результата

74 расширенных кода результата определяются в sqlite3.h и перечисляются в алфавитном порядке ниже:

6. Кодовые значения результата

Значения для всех 105 кодовых обозначений результата показывают ниже в числовом порядке.

(0) SQLITE_OK

Код результата SQLITE_OK означает, что операция была успешна и что не было никаких ошибок. Большинство других кодов результата указывают на ошибку.

(1) SQLITE_ERROR

Код результата SQLITE_ERROR это универсальный код ошибки, который используется, когда никакой другой более определенный код ошибки недоступен.

(2) SQLITE_INTERNAL

Код результата SQLITE_INTERNAL указывает на внутренний сбой. В рабочей версии SQLite приложение никогда не должно видеть этот код результата. Если приложение действительно сталкивается с этим кодом результата, он показывает, что есть ошибка в ядре базы данных.

SQLite в настоящее время не производит этот код результата. Однако, определенные применением функции SQL, виртуальные таблицы, VFS или другие расширения могли бы заставить этот код результата быть возвращенным.

(3) SQLITE_PERM

Код результата SQLITE_PERM указывает, что требуемый режим доступа для недавно созданной базы данных не мог быть обеспечен.

(4) SQLITE_ABORT

Код результата SQLITE_ABORT указывает, что операция была прервана до завершения, обычно запросом приложения. См. также: SQLITE_INTERRUPT.

Если функция обратного вызова sqlite3_exec() вернет отличное от нуля значение, то sqlite3_exec() вернет SQLITE_ABORT.

Если ROLLBACK происходит на том же самом соединении с БД как ждущее чтение или запись, то ожидание может потерпеть неудачу с SQLITE_ABORT или ошибкой SQLITE_ABORT_ROLLBACK.

В дополнение к тому, чтобы быть кодом результата, значение SQLITE_ABORT также используется в качестве способа разрешения конфликтов, возвращенного из sqlite3_vtab_on_conflict().

(5) SQLITE_BUSY

Код результата SQLITE_BUSY указывает, что файл базы данных не мог быть написан (или в некоторых случаях прочитан) из-за параллельной деятельности некоторым другим соединением с базой данных, обычно соединением с базой данных в отдельном процессе.

Например, если процесс A будет посреди большой транзакции записи, и в то же время процесс B пытается начаться, то новая транзакция записи, чтобы обработать B возвратит результат SQLITE_BUSY, потому что SQLite поддерживает только одного писателя за один раз. Процесс B должен будет ждать процесс A, чтобы тот закончил его транзакцию прежде, чем начать новую. sqlite3_busy_timeout(), sqlite3_busy_handler() и busy_timeout pragma доступны процессу B, чтобы помочь ему иметь дело с ошибками SQLITE_BUSY.

Ошибка SQLITE_BUSY может произойти в любом пункте в транзакции. Чтобы избежать сталкиваться с ошибками SQLITE_BUSY посреди транзакции, применение может использовать BEGIN IMMEDIATE вместо простого BEGIN для начала транзакции. BEGIN IMMEDIATE могла бы самостоятельно возвратить SQLITE_BUSY, но если это имеет успех, тогда SQLite, гарантирует, что никакие последующие операции на той же самой базе данных до следующего COMMIT не вернут SQLITE_BUSY.

См. также: SQLITE_BUSY_RECOVERY и SQLITE_BUSY_SNAPSHOT.

Код результата SQLITE_BUSY отличается от SQLITE_LOCKED в том, что SQLITE_BUSY, указывает на конфликт с отдельным соединением с базой данных, вероятно в отдельном процессе, тогда как SQLITE_LOCKED указывает на конфликт в рамках того же самого соединения с базой данных (или иногда соединения с базой данных с общим кэшем).

(6) SQLITE_LOCKED

Код результата SQLITE_LOCKED указывает, что операция записи не могла продолжиться из-за конфликта в рамках того же самого соединения с базой данных (или иногда соединения с базой данных с общим кэшем.

Например, запросом DROP TABLE нельзя управлять в то время, как другой поток читает от той таблицы на том же самом соединении с базой данных, потому что удаление таблицы удалило бы таблицу у параллельного читателя.

Код результата SQLITE_LOCKED отличается от SQLITE_BUSY в том, что SQLITE_LOCKED указывает на конфликт на том же самом соединения с базой данных (или иногда соединения с базой данных с общим кэшем), тогда как SQLITE_BUSY указывает на конфликт с различным соединением с базой данных, вероятно в другом процессе.

(7) SQLITE_NOMEM

Код результата SQLITE_NOMEM указывает, что SQLite был неспособен ассигновать всю память, чтобы закончить операцию. Другими словами, внутренний вызов sqlite3_malloc() или sqlite3_realloc() обломался в случае, где ассигнуемая память требовалась, чтобы продолжить операцию.

(8) SQLITE_READONLY

Код результата SQLITE_READONLY возвращен, когда предпринята попытка, чтобы изменить некоторые данные, для которых текущее соединение с базой данных не имеет права записи.

(9) SQLITE_INTERRUPT

Код результата SQLITE_INTERRUPT указывает, что операция была прервана sqlite3_interrupt(). См. также: SQLITE_ABORT

(10) SQLITE_IOERR

В коде результата SQLITE_IOERR говорится, что операция не могла закончиться, потому что операционная система сообщила об ошибке I/O.

Полный дисковод будет обычно давать ошибку SQLITE_FULL вместо SQLITE_IOERR.

Есть много различных расширенных кодов результата для ошибок I/O, которые определяют определенную операцию I/O, которая потерпела неудачу.

(11) SQLITE_CORRUPT

Код результата SQLITE_CORRUPT указывает, что файл базы данных был испорчен. Посмотрите здесь для дальнейшего обсуждения того, как это может произойти.

(12) SQLITE_NOTFOUND

Код результата SQLITE_NOTFOUND выставляется тремя способами:

  1. SQLITE_NOTFOUND может быть возвращен sqlite3_file_control(), чтобы указать, что файл управляет кодом операции, переданный как третий аргумент, не был признан основным VFS.

  2. SQLITE_NOTFOUND может также быть возвращен методом xSetSystemCall() объекта sqlite3_vfs.

  3. SQLITE_NOTFOUND может быть возвращен sqlite3_vtab_rhs_value(), чтобы указать, что правый операнд ограничения недоступен методу xBestIndex, который сделал вызов.

Код результата SQLITE_NOTFOUND также используется внутренне внедрением SQLite, но те внутренние использования не выставляются приложению.

(13) SQLITE_FULL

Код результата SQLITE_FULL указывает, что запись не могла закончиться, потому что диск полон. Обратите внимание на то, что эта ошибка может произойти, пытаясь написать информацию в главный файл базы данных, или это может также произойти, записывая временные дисковые файлы.

Иногда запросы сталкиваются с этой ошибкой даже при том, что есть изобилие пространства первичного диска, потому что ошибка происходит, записывая во временные дисковые файлы на системе, где временные файлы хранятся на отдельном разделе с намного меньшим количеством пространства.

(14) SQLITE_CANTOPEN

Код результата SQLITE_CANTOPEN указывает, что SQLite был неспособен открыть файл. Рассматриваемый файл мог бы быть основным файлом базы данных или одним из нескольких временных дисковых файлов.

(15) SQLITE_PROTOCOL

Код результата SQLITE_PROTOCOL указывает на проблему с протоколом блокировки файла, используемым SQLite. Ошибка SQLITE_PROTOCOL в настоящее время возвращена только, используя режим WAL и пытаясь начать новую транзакцию. Есть состояние состязания, которое может произойти когда два отдельных соединения оба делают попытки начать транзакцию в режиме WAL в то же время. Проигравший гонку отступает и пробует еще раз после краткой задержки. Если та же самая связь проиграет гонку десятки раз за много секунд, это в конечном счете сдастся и возвратит SQLITE_PROTOCOL. Ошибка SQLITE_PROTOCOL должна появиться на практике очень, очень редко, и только когда есть много отдельных процессов, пишущих ту же самую базу данных.

(16) SQLITE_EMPTY

Код результата SQLITE_EMPTY в настоящее время не используется.

(17) SQLITE_SCHEMA

Код результата SQLITE_SCHEMA указывает, что схема базы данных изменилась. Этот код результата может быть возвращен из sqlite3_step() для подготовленного запроса, который был произведен, используя sqlite3_prepare() или sqlite3_prepare16(). Если схема базы данных была изменена некоторым другим процессом в то время, когда запрос подготовлен, но еще не выполнен, эта ошибка может быть выдана.

Если подготовленный запрос произведен sqlite3_prepare_v2(), он автоматически повторно подготовлен, если схема изменяется, максимум SQLITE_MAX_SCHEMA_RETRY раз (умолчание: 50). sqlite3_step() возвратит SQLITE_SCHEMA назад к приложению только если неудача сохранится это число повторений.

(18) SQLITE_TOOBIG

Код ошибки SQLITE_TOOBIG указывает, что последовательность или BLOB были слишком большими. Продолжительность максимума по умолчанию последовательности или BLOB в SQLite составляет 1,000,000,000 байтов. Эта максимальная длина может быть изменена во время компиляции, используя выбор времени компиляции SQLITE_MAX_LENGTH или во время выполнения, используя sqlite3_limit(db, SQLITE_LIMIT_LENGTH,...). Ошибка SQLITE_TOOBIG бывает, когда SQLite сталкивается с последовательностью или BLOB, который превышает предел, заданный во время компиляции или во время выполнения.

Код ошибки SQLITE_TOOBIG может также быть выдан, когда негабаритный SQL-оператор передается в один из sqlite3_prepare_v2(). Максимальная длина SQL-оператора по умолчанию задана к намного меньшему значению в 1,000,000,000 байт. Максимальная длина SQL-оператора может быть установлена во время компиляции, используя SQLITE_MAX_SQL_LENGTH или во время выполнения, используя sqlite3_limit(db, SQLITE_LIMIT_SQL_LENGTH,...).

(19) SQLITE_CONSTRAINT

Код ошибки SQLITE_CONSTRAINT означает, что ограничительное нарушение SQL произошло, пытаясь обработать SQL-оператор. Дополнительная информация о неудавшемся ограничении может быть найдена, консультируясь с сопровождающим сообщением об ошибке (возвращается через sqlite3_errmsg() или sqlite3_errmsg16()) или смотря на расширенный код ошибки.

Код SQLITE_CONSTRAINT может также использоваться в качестве возвращаемого значения метода xBestIndex() виртуальной таблицы. Когда xBestIndex() вернет SQLITE_CONSTRAINT, это указывает, что конкретная комбинация входов, представленных xBestIndex(), не может привести к применимому плану запросов и не должна быть рассмотрена в дальнейшем.

(20) SQLITE_MISMATCH

Код ошибки SQLITE_MISMATCH указывает на неверный тип данных.

SQLite обычно очень прощающий о несоответствиях между типом и заявленным типом контейнера, в котором должно быть сохранено значение. Например, SQLite позволяет запросу сохранить большой BLOB в колонке с заявленным типом BOOLEAN. Но в нескольких случаях, SQLite строг в типах. Ошибка SQLITE_MISMATCH возвращена в тех немногих случаях, когда типы не соответствуют.

rowid таблицы должен быть integer. Попытайтесь установить rowid во что-либо кроме целого числа (или NULL, который будет автоматически преобразован в следующее доступное целое число rowid), результатом будет ошибка SQLITE_MISMATCH.

(21) SQLITE_MISUSE

Код возврата SQLITE_MISUSE мог бы быть возвращен, если применение использует какой-либо интерфейс SQLite способом, который не определен или не поддерживается. Например, используя подготовленный запрос после того, как он был закрыт, можно получить ошибку SQLITE_MISUSE.

SQLite пытается обнаружить неправильное употребление и сообщить о неправильном употреблении, используя этот код результата. Однако, нет никакой гарантии, что обнаружение неправильного употребления будет успешно. Обнаружение неправильного употребления вероятностное. Запросы никогда не должны зависеть от возвращаемого значения SQLITE_MISUSE.

Если SQLite когда-нибудь возвращает SQLITE_MISUSE из какого-либо интерфейса, это означает, что приложение неправильно закодировано и должно быть исправлено. Не отправляйте приложение, которое иногда возвращает SQLITE_MISUSE из стандартного интерфейса SQLite, потому что это содержит потенциально серьезные ошибки.

(22) SQLITE_NOLFS

Ошибка SQLITE_NOLFS может быть возвращена на системах, которые не поддерживают большие файлы, когда база данных растет, чтобы быть больше того, с чем может обращаться файловая система. "NOLFS" обозначает "NO Large File Support".

(23) SQLITE_AUTH

Ошибка SQLITE_AUTH возвращена, когда отзыв авторизатора указывает, что подготовленный SQL-оператор не разрешен.

(24) SQLITE_FORMAT

Код ошибки SQLITE_FORMAT в настоящее время не используется SQLite.

(25) SQLITE_RANGE

Ошибка SQLITE_RANGE указывает, что аргумент номера параметра к одному из sqlite3_bind или номера столбца в одном из sqlite3_column вне диапазона.

(26) SQLITE_NOTADB

Пытаясь открыть файл, ошибка SQLITE_NOTADB указывает, что открываемый файл, кажется, не файл базы данных SQLite.

(27) SQLITE_NOTICE

Код результата SQLITE_NOTICE не возвращен никаким интерфейсом C/C++. Однако, SQLITE_NOTICE (или скорее один из его расширенных кодов ошибок) иногда используется в качестве первого аргумента в отзыве sqlite3_log(), чтобы указать, что происходит необычная операция.

(28) SQLITE_WARNING

Код результата SQLITE_WARNING не возвращен никаким интерфейсом C/C++. Однако, SQLITE_WARNING (или скорее один из его расширенных кодов ошибок) иногда используется в качестве первого аргумента в отзыве sqlite3_log(), чтобы указать, что происходит необычная операция.

(100) SQLITE_ROW

Код результата SQLITE_ROW, возвращенный sqlite3_step(), указывает, что другая строка вывода доступна.

(101) SQLITE_DONE

Код результата SQLITE_DONE указывает, что операция закончилась. Код результата SQLITE_DONE обычно рассматривается как возвращаемое значение от sqlite3_step(), указывая, что SQL-оператор дошел до завершения. Но SQLITE_DONE может также быть возвращен другими многоступенчатыми интерфейсами, такими как sqlite3_backup_step().

(256) SQLITE_OK_LOAD_PERMANENTLY

sqlite3_load_extension() загружает расширение в связь единой базы данных. Поведение по умолчанию для того расширения, которое будет автоматически выгружено, когда соединение с базой данных закрывается. Однако, если дополнительная точка входа возвращает SQLITE_OK_LOAD_PERMANENTLY вместо SQLITE_OK, то расширение остается загруженным в адресное пространство процесса после того, как соединение с базой данных закрывается. Другими словами, метод xDlClose объекта sqlite3_vfs не вызван для расширения, когда соединение с базой данных закрывается.

Код возврата SQLITE_OK_LOAD_PERMANENTLY полезен для загружаемых расширений, которые регистрируют новую VFS, например.

(257) SQLITE_ERROR_MISSING_COLLSEQ

Код результата SQLITE_ERROR_MISSING_COLLSEQ означает, что SQL-оператор не мог быть подготовлен, потому что последовательность сопоставления, названная в том SQL-операторе, не могла быть найдена.

Иногда, когда с этим кодом ошибки сталкиваются, sqlite3_prepare_v2() преобразует ошибку в SQLITE_ERROR_RETRY и попробует еще раз готовить SQL-оператор, используя различный план запросов, который не требует использования неизвестной последовательности сопоставления.

(261) SQLITE_BUSY_RECOVERY

Код ошибки SQLITE_BUSY_RECOVERY это расширенный код ошибки для SQLITE_BUSY, который указывает, что операция не могла продолжиться, потому что другой процесс занят, восстанавливая файл базы данных в режиме WAL после сбоя. Код ошибки SQLITE_BUSY_RECOVERY происходит только на базах данных в режиме WAL.

(262) SQLITE_LOCKED_SHAREDCACHE

Код результата SQLITE_LOCKED_SHAREDCACHE указывает, что доступ к записи данных SQLite блокирован другим соединением с базой данных, которое использует тот же самый отчет в режиме общего кэша. Когда два или больше соединения с базой данных разделяют тот же самый кэш, и одна из связей посреди изменения отчета в том кэше, другие связи заблокированы на доступ к тем данным, в то время как модификации продолжаются, чтобы препятствовать тому, чтобы читатели видели частично завершенное изменение.

(264) SQLITE_READONLY_RECOVERY

Код ошибки SQLITE_READONLY_RECOVERY это расширенный код ошибки для SQLITE_READONLY. Код ошибки SQLITE_READONLY_RECOVERY указывает, что база данных в режиме WAL не может быть открыта, потому что файл базы данных должен быть восстановлен, и восстановление требует доступа для записи, но доступен только доступ для чтения.

(266) SQLITE_IOERR_READ

Код ошибки SQLITE_IOERR_READ это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в слое VFS, пытаясь читать из файла на диске. Эта ошибка могла бы следовать из сбоя аппаратных средств или потому что файловая система отмонтирована в то время, как файл был открыт.

(267) SQLITE_CORRUPT_VTAB

Код ошибки SQLITE_CORRUPT_VTAB это расширенный код ошибки для SQLITE_CORRUPT используемого виртуальными таблицами. Таблица могла бы возвратить SQLITE_CORRUPT_VTAB, чтобы указать, что содержание в виртуальной таблице повреждено.

(270) SQLITE_CANTOPEN_NOTEMPDIR

Код ошибки SQLITE_CANTOPEN_NOTEMPDIR больше не используется.

(275) SQLITE_CONSTRAINT_CHECK

Код ошибки SQLITE_CONSTRAINT_CHECK это расширенный код ошибки для SQLITE_CONSTRAINT, указывающего, что ограничение CHECK потерпело неудачу.

(279) SQLITE_AUTH_USER

Код ошибки SQLITE_AUTH_USER это расширенный код ошибки для SQLITE_AUTH, указывающий, что операция была предпринята на базе данных, на которой пользователь не имеет достаточных прав.

(283) SQLITE_NOTICE_RECOVER_WAL

Код результата SQLITE_NOTICE_RECOVER_WAL передан к отзыву sqlite3_log(), когда файл базы данных в режиме WAL восстановлен.

(284) SQLITE_WARNING_AUTOINDEX

Код результата SQLITE_WARNING_AUTOINDEX передан к отзыву sqlite3_log() каждый раз, когда используется автоматическая индексация. Это может служить предупреждением разработчикам приложений, что база данных могла бы извлечь выгоду из дополнительных индексов.

(513) SQLITE_ERROR_RETRY

SQLITE_ERROR_RETRY используется внутренне, чтобы побудить sqlite3_prepare_v2() попробовать еще раз подготовить запрос, который потерпел неудачу с ошибкой на предыдущей попытке.

(516) SQLITE_ABORT_ROLLBACK

Код ошибки SQLITE_ABORT_ROLLBACK это расширенный код ошибки для SQLITE_ABORT, указывающий, что SQL-оператор прервался, потому что транзакция, которая была активна, когда SQL-оператор начат, была отменена. Надвигающиеся операции записи всегда терпят неудачу с этой ошибкой, когда обратная перемотка происходит. ROLLBACK заставит надвигающуюся операцию чтения терпеть неудачу, только если схема была изменена в отменяемой транзакции.

(517) SQLITE_BUSY_SNAPSHOT

Код ошибки SQLITE_BUSY_SNAPSHOT это расширенный код ошибки для SQLITE_BUSY, который происходит на базах данных в режиме WAL, когда соединение с базой данных пытается улучшить транзакцию чтения до транзакции записи, но находит, что другое соединение с БД уже пишет базу данных и таким образом блокирует предыдущее чтение.

Следующий сценарий иллюстрирует, как могла бы возникнуть ошибка SQLITE_BUSY_SNAPSHOT:

  1. Процесс A запускает транзакцию чтения на базе данных, и делает один или несколько операторов SELECT. Процесс A сохраняет транзакцию открытой.
  2. Процесс B обновляет базу данных, изменив значения, ранее прочитанные процессом A.
  3. Процесс A теперь делает попытку написать базу данных. Но точка зрения процесса А на содержание базы данных теперь устарела, потому что процесс B изменил файл базы данных после того, как процесс А ее читал. Следовательно, процесс A получает ошибку SQLITE_BUSY_SNAPSHOT.

(518) SQLITE_LOCKED_VTAB

Код результата SQLITE_LOCKED_VTAB не используется ядром SQLite, но это доступно для использования расширениями. Виртуальные таблицы могут возвратить этот код результата, чтобы указать, что они не могут закончить текущую операцию из-за блокировок, проводимых другими потоками или процессами.

Расширение R-Tree возвращает этот код результата, когда предпринята попытка обновить R-дерево в то время, как другой подготовленный запрос активно читает R-дерево. Обновление не может продолжиться, потому что любое изменение R-дерева могло бы включить перестановку и изменение баланса узлов, которые разрушат прочитанные курсоры, заставляя некоторые строки быть повторенными и пропустить другие строки.

(520) SQLITE_READONLY_CANTLOCK

SQLITE_READONLY_CANTLOCK это расширенный код ошибки для SQLITE_READONLY. Код ошибки SQLITE_READONLY_CANTLOCK указывает, что SQLite неспособен получить блокировку чтения на БД в режиме WAL, потому что файл общей памяти, связанный с той базой данных, только для чтения.

(522) SQLITE_IOERR_SHORT_READ

SQLITE_IOERR_SHORT_READ это расширенный код ошибки для SQLITE_IOERR, указывающий, что попытка чтения в слое VFS была неспособна получить столько байтов, сколько надо. Это могло бы произойти из-за усеченного файла.

(523) SQLITE_CORRUPT_SEQUENCE

Код результата SQLITE_CORRUPT_SEQUENCE означает, что схема таблицы sqlite_sequence накрылась. Таблица sqlite_sequence используется, чтобы помочь реализовать опцию AUTOINCREMENT. Таблица sqlite_sequence должна быть в следующем формате:

CREATE TABLE sqlite_sequence(name,seq);

Если SQLite обнаруживает, что у sqlite_sequence есть любой другой формат, это возвращает ошибку SQLITE_CORRUPT_SEQUENCE.

(526) SQLITE_CANTOPEN_ISDIR

SQLITE_CANTOPEN_ISDIR это расширенный код ошибки для SQLITE_CANTOPEN, указывающий, что операция открытия файла потерпела неудачу, потому что файл на самом деле каталог.

(531) SQLITE_CONSTRAINT_COMMITHOOK

SQLITE_CONSTRAINT_COMMITHOOK это расширенный код ошибки для SQLITE_CONSTRAINT, указывающий, что commit hook callback вернул не 0, который таким образом заставил SQL-оператор отменится.

(539) SQLITE_NOTICE_RECOVER_ROLLBACK

Код результата SQLITE_NOTICE_RECOVER_ROLLBACK передан к отзыву sqlite3_log() при откате горячего журнала.

(769) SQLITE_ERROR_SNAPSHOT

Код результата SQLITE_ERROR_SNAPSHOT мог бы быть возвращен, пытаясь начать транзакцию чтения на исторической версии базы данных при помощи sqlite3_snapshot_open(). Если исторический снимок больше не будет доступен, то транзакция потерпит неудачу с SQLITE_ERROR_SNAPSHOT. Этот код ошибки возможен только, если SQLite собран с -DSQLITE_ENABLE_SNAPSHOT.

(773) SQLITE_BUSY_TIMEOUT

Код ошибки SQLITE_BUSY_TIMEOUT указывает, что консультативная блокировка Posix файла в слое VFS потерпела неудачу из-за тайм-аута. Это доступно только как собственное расширение SQLite и даже тогда поддерживается только, если SQLite собран с выбором времени компиляции SQLITE_EANBLE_SETLK_TIMEOUT.

(776) SQLITE_READONLY_ROLLBACK

SQLITE_READONLY_ROLLBACK это расширенный код ошибки для SQLITE_READONLY. SQLITE_READONLY_ROLLBACK указывает, что база данных не может быть открыта, потому что у этого есть горячий журнал , который должен быть отменен, но этого сделать нельзя, потому что база данных только для чтения.

(778) SQLITE_IOERR_WRITE

SQLITE_IOERR_WRITE это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в слое VFS, пытаясь написать в файл на диске. Эта ошибка могла бы следовать из сбоя аппаратных средств или потому что файловая система отмонтирована в то время, как файл был открыт. Эта ошибка не должна происходить, если файловая система полна, поскольку есть отдельный код ошибки (SQLITE_FULL) с этой целью.

(779) SQLITE_CORRUPT_INDEX

SQLITE_CORRUPT_INDEX означает, что SQLite обнаружил вход, отсутствующий в индексе. Это особый случай кода ошибки SQLITE_CORRUPT, который предполагает, что проблема могла бы быть решена, управляя командой REINDEX, предполагая, что никакие другие проблемы не существуют в другом месте в файле базы данных.

(782) SQLITE_CANTOPEN_FULLPATH

SQLITE_CANTOPEN_FULLPATH это расширенный код ошибки для SQLITE_CANTOPEN, указывающий, что операция открытия файла потерпела неудачу, потому что операционная система была неспособна преобразовать имя файла в полный путь.

(787) SQLITE_CONSTRAINT_FOREIGNKEY

SQLITE_CONSTRAINT_FOREIGNKEY это расширенный код ошибки для SQLITE_CONSTRAINT, указывающий, что ограничение внешнего ключа потерпело неудачу.

(1032) SQLITE_READONLY_DBMOVED

SQLITE_READONLY_DBMOVED это расширенный код ошибки для SQLITE_READONLY. SQLITE_READONLY_DBMOVED Код ошибки SQLITE_READONLY_DBMOVED указывает, что база данных не может быть изменена, потому что файл базы данных был перемещен после того, как это было открыто, и таким образом, любая попытка изменить базу данных могла бы привести к повреждению базы данных, если процессы терпят крах, потому что журнал отката правильно не назовут.

(1034) SQLITE_IOERR_FSYNC

SQLITE_IOERR_FSYNC это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в слое VFS, пытаясь сбросить на диск записанные данные. Другими словами, этот код указывает на проблему с системным вызовом fsync() в unix или с FlushFileBuffers() в windows.

(1038) SQLITE_CANTOPEN_CONVPATH

SQLITE_CANTOPEN_CONVPATH это расширенный код ошибки для SQLITE_CANTOPEN, используемый только Cygwin VFS указывая, что системный вызов cygwin_conv_path() не смог открыть файл. См. также: SQLITE_IOERR_CONVPATH.

(1043) SQLITE_CONSTRAINT_FUNCTION

Код ошибки SQLITE_CONSTRAINT_FUNCTION в настоящее время не используется ядром SQLite. Однако, этот код ошибки доступен для использования дополнительными функциями.

(1288) SQLITE_READONLY_CANTINIT

Код результата SQLITE_READONLY_CANTINIT происходит в методе xShmMap VFS, чтобы указать, что регион общей памяти, используемый режимом WAL, существует, но его содержание ненадежно и непригодно для использования текущим процессом, так как текущий процесс не имеет разрешения записи на регионе общей памяти. Регион общей памяти для режима WAL это обычно файл с суффиксом "-wal", который отображен в пространство процесса. Если текущий процесс не имеет разрешения записи на том файле, то это не может написать в общую память.

Высокоуровневая логика в SQLite будет обычно перехватывать код ошибки и создавать временный регион общей памяти в памяти так, чтобы текущий процес с мог, по крайней мере, прочитать содержание базы данных. Этот код результата не должен достигать слоя интерфейса приложения.

(1290) SQLITE_IOERR_DIR_FSYNC

SQLITE_IOERR_DIR_FSYNC это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в слое VFS, пытаясь вызвать fsync() в каталоге. unix VFS делает попытку fsync() после создания или удаления определенных файлов, чтобы гарантировать, что те файлы все же появятся в файловой системе после системной катастрофы или потерь питания. Этот код ошибки указывает на проблему, пытающуюся выполнить этот fsync().

(1294) SQLITE_CANTOPEN_DIRTYWAL

Код результата SQLITE_CANTOPEN_DIRTYWAL не используется в это время.

(1299) SQLITE_CONSTRAINT_NOTNULL

Код ошибки SQLITE_CONSTRAINT_NOTNULL это расширенный код ошибки для SQLITE_CONSTRAINT, указывающий, что ограничение NOT NULL навернулось.

(1544) SQLITE_READONLY_DIRECTORY

Код результата SQLITE_READONLY_DIRECTORY указывает, что база данных только для чтения, потому что у процесса нет разрешения создать файл журнала в том же самом каталоге, где база данных, и создание файла журнала это предпосылка для написания.

(1546) SQLITE_IOERR_TRUNCATE

SQLITE_IOERR_TRUNCATE это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в слое VFS, пытаясь усечь файл к меньшему размеру.

(1550) SQLITE_CANTOPEN_SYMLINK

Код результата SQLITE_CANTOPEN_SYMLINK возвращен sqlite3_open(), когда флаг SQLITE_OPEN_NOFOLLOW используется, и файл базы данных это символьная ссылка.

(1555) SQLITE_CONSTRAINT_PRIMARYKEY

SQLITE_CONSTRAINT_PRIMARYKEY это расширенный код ошибки для SQLITE_CONSTRAINT, указывающий, что ограничение PRIMARY KEY потерпело неудачу.

(1802) SQLITE_IOERR_FSTAT

SQLITE_IOERR_FSTAT это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в слое VFS, пытаясь вызвать fstat() (или эквивалент) на файле, чтобы определить такую информацию, как размер файла или права доступа.

(1811) SQLITE_CONSTRAINT_TRIGGER

SQLITE_CONSTRAINT_TRIGGER это расширенный код ошибки для SQLITE_CONSTRAINT, указывающий, что функция RAISE в запущенном триггере заставила SQL-оператор прерваться.

(2058) SQLITE_IOERR_UNLOCK

SQLITE_IOERR_UNLOCK это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в рамках метода xUnlock на объекте sqlite3_io_methods.

(2067) SQLITE_CONSTRAINT_UNIQUE

SQLITE_CONSTRAINT_UNIQUE это расширенный код ошибки для SQLITE_CONSTRAINT, указывающий, что ограничение UNIQUE потерпело неудачу.

(2314) SQLITE_IOERR_RDLOCK

SQLITE_IOERR_RDLOCK это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в рамках метода xLock на объекте sqlite3_io_methods, пытаясь получить блокировку чтения.

(2323) SQLITE_CONSTRAINT_VTAB

Код ошибки SQLITE_CONSTRAINT_VTAB в настоящее время не используется ядром SQLite. Однако, этот код ошибки доступен для использования определенными приложением виртуальными таблицами.

(2570) SQLITE_IOERR_DELETE

SQLITE_IOERR_DELETE это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в рамках метода xDelete на объекте sqlite3_vfs.

(2579) SQLITE_CONSTRAINT_ROWID

SQLITE_CONSTRAINT_ROWID это расширенный код ошибки для SQLITE_CONSTRAINT, указывающий, что rowid не уникален.

(2826) SQLITE_IOERR_BLOCKED

Код ошибки SQLITE_IOERR_BLOCKED больше не используется.

(2835) SQLITE_CONSTRAINT_PINNED

SQLITE_CONSTRAINT_PINNED это расширенный код ошибки для SQLITE_CONSTRAINT, указывающий, что триггер UPDATE действительно удаляет строку, которая обновлялась посреди обновления.

(3082) SQLITE_IOERR_NOMEM

Код ошибки SQLITE_IOERR_NOMEM иногда возвращается слоем VFS, чтобы указать, что операция не могла быть закончена из-за неспособности ассигновать достаточную память. Этот код ошибки обычно преобразовывается в SQLITE_NOMEM более высокими слоями SQLite прежде, чем быть возвращенным к применению.

(3091) SQLITE_CONSTRAINT_DATATYPE

SQLITE_CONSTRAINT_DATATYPE это расширенный код ошибки для SQLITE_CONSTRAINT, указывающий, что вставка или обновление попытались сохранить значение, несовместимое с заявленным типом колонки в таблице, определенной как STRICT.

(3338) SQLITE_IOERR_ACCESS

SQLITE_IOERR_ACCESS это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в рамках метода xAccess на объекте sqlite3_vfs.

(3594) SQLITE_IOERR_CHECKRESERVEDLOCK

SQLITE_IOERR_CHECKRESERVEDLOCK это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в рамках метода xCheckReservedLock на объекте sqlite3_io_methods.

(3850) SQLITE_IOERR_LOCK

SQLITE_IOERR_LOCK это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в консультативной логике блокировки файла. Обычно ошибка SQLITE_IOERR_LOCK указывает на проблему, получая блокировку PENDING. Однако, это может также указать на разные ошибки блокировки на некоторых специализированных VFS на Mac.

(4106) SQLITE_IOERR_CLOSE

SQLITE_IOERR_CLOSE это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в рамках метода xClose на объекте sqlite3_io_methods.

(4362) SQLITE_IOERR_DIR_CLOSE

Код ошибки SQLITE_IOERR_DIR_CLOSE больше не используется.

(4618) SQLITE_IOERR_SHMOPEN

SQLITE_IOERR_SHMOPEN это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в рамках метода xShmMap на объекте sqlite3_io_methods, пытаясь открыть новый сегмент общей памяти.

(4874) SQLITE_IOERR_SHMSIZE

SQLITE_IOERR_SHMSIZE это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в рамках метода xShmMap на объекте sqlite3_io_methods, пытаясь увеличить файл "shm" как часть обработки транзакций режима WAL. Эта ошибка может указать, что основной том файловой системы переполнен.

(5130) SQLITE_IOERR_SHMLOCK

Код ошибки SQLITE_IOERR_SHMLOCK больше не используется.

(5386) SQLITE_IOERR_SHMMAP

SQLITE_IOERR_SHMMAP это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в рамках метода xShmMap на объекте sqlite3_io_methods, пытаясь отобразить сегмент общей памяти в адресное пространство процесса.

(5642) SQLITE_IOERR_SEEK

SQLITE_IOERR_SEEK это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в методах xRead или xWrite на объекте sqlite3_io_methods, пытаясь установить дескриптор файла на начальную точку файла, где чтение или запись должны произойти.

(5898) SQLITE_IOERR_DELETE_NOENT

SQLITE_IOERR_DELETE_NOENT это расширенный код ошибки для SQLITE_IOERR, указывающий, что метод xDelete на объекте sqlite3_vfs потерпел неудачу, потому что удаляемый файл не существует.

(6154) SQLITE_IOERR_MMAP

SQLITE_IOERR_MMAP это расширенный код ошибки для SQLITE_IOERR, указывающий на ошибку I/O в методах xFetch или xUnfetch на объекте sqlite3_io_methods, пытаясь отобразить часть файла базы данных в адресное пространство процесса.

(6410) SQLITE_IOERR_GETTEMPPATH

SQLITE_IOERR_GETTEMPPATH это расширенный код ошибки для SQLITE_IOERR, указывающий, что VFS неспособен определить подходящий каталог, в который можно поместить временные файлы.

(6666) SQLITE_IOERR_CONVPATH

SQLITE_IOERR_CONVPATH это расширенный код ошибки для SQLITE_IOERR, используемый только Cygwin VFS и указывающий, что системный вызов cygwin_conv_path() сбойнул. См. также: SQLITE_CANTOPEN_CONVPATH.

(6922) SQLITE_IOERR_VNODE

Код ошибки SQLITE_IOERR_VNODE это код, зарезервированный для использования расширениями. Это не используется ядром SQLite.

(7178) SQLITE_IOERR_AUTH

Код ошибки SQLITE_IOERR_AUTH это код, зарезервированный для использования расширениями. Это не используется ядром SQLite.

(7434) SQLITE_IOERR_BEGIN_ATOMIC

Код ошибки SQLITE_IOERR_BEGIN_ATOMIC указывает, что основная операционная система имеет проблему, о которой сообщают, и есть ошибка SQLITE_FCNTL_BEGIN_ATOMIC_WRITE относительно контроля файла. Это происходит только, когда SQLITE_ENABLE_ATOMIC_WRITE позволен, и база данных размещена в файловой системе, которая поддерживает атомную запись.

(7690) SQLITE_IOERR_COMMIT_ATOMIC

Код ошибки SQLITE_IOERR_COMMIT_ATOMIC указывает, что основная операционная система имеет проблему, о которой сообщают, и есть ошибка SQLITE_FCNTL_COMMIT_ATOMIC_WRITE относительно контроля файла. Это происходит только, когда SQLITE_ENABLE_ATOMIC_WRITE позволен, и база данных размещена в файловой системе, которая поддерживает атомную запись.

(7946) SQLITE_IOERR_ROLLBACK_ATOMIC

Код ошибки SQLITE_IOERR_ROLLBACK_ATOMIC указывает, что основная операционная система имеет проблему, о которой сообщают, и есть ошибка SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE относительно контроля файла. Это происходит только, когда SQLITE_ENABLE_ATOMIC_WRITE позволен, и база данных размещена в файловой системе, которая поддерживает атомную запись.

(8202) SQLITE_IOERR_DATA

SQLITE_IOERR_DATA это расширенный код ошибки для SQLITE_IOERR, используемый только checksum VFS shim, чтобы указать, что контрольная сумма на странице файла базы данных неправильная.

(8458) SQLITE_IOERR_CORRUPTFS

SQLITE_IOERR_CORRUPTFS это расширенный код ошибки для SQLITE_IOERR, используемый только VFS, чтобы указать, что поиск или чтение сбойнули из-за запроса, не находящегося в пределах границы файла, а не обычного отказа устройства. Это часто указывает на поврежденную файловую систему.