sqlite3 close заявление не работает - PullRequest
1 голос
/ 26 января 2010

Я использую программу на C с sqlite3. Иногда вставка работает. Но иногда не работает. assert (retval == SQLITE3_OK) дает ошибку. во время отладки я обнаружил, что возвращаемое значение sqlite3_step () - код ошибки = 5 который ссылается на файл базы данных занят Даже закрытие с sqlite3_close () возвращает код ошибки 5.

Есть мысли о том, как закрыть соединение с базой данных, даже если оно занято?

1 Ответ

0 голосов
/ 08 февраля 2010

Вы можете быть в середине транзакции. Попробуйте проверить http://www.sqlite.org/c3ref/get_autocommit.html для объяснения того, как sqlite3_get_autocommit() работает. Он должен возвращать ноль, если он не находится в автоматической фиксации, то есть существует открытая транзакция.

Или, если вы подозреваете, что ваша база данных еще что-то работает, вы можете использовать sqlite3_busy_timeout() для установки таймера. http://www.sqlite.org/c3ref/busy_timeout.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...