Что заставляет файл журнала быть созданным в SQLite?

Unit - это тип уникального значения (), произносится как «единица».

BoxedUnit является деталью реализации Scala на JVM, используется для кодирования (), когда он входит в общий контекст, или иначе назначен Any. Как правило, вы не должны слышать о BoxedUnit в первую очередь, хотя это и утечка некоторых функций уровня пользователя. Например ((): Any).getClass().getName() == "scala.runtime.BoxedUnit".

Тем не менее, ошибка, которую вы получаете, явно связана с сбоем компилятора, о чем свидетельствует AssertionError. Это не проблема в коде. Вероятно, вы должны сообщить об этом как ошибку , если она еще не находится в базе данных ошибок.

26
задан Martin Cote 11 March 2009 в 13:56
поделиться

3 ответа

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

Вы можете изменить это поведение, просто обрезая файл (не нужно создавать / удалять) или обнуляя его, с помощью команды PRAGMA sql. Не все опции могут поддерживаться в вашей версии SQLite.

PRAGMA journal_mode = DELETE | TRUNCATE | PERSIST | MEMORY | OFF  

Операции записи обычно не завершаются до тех пор, пока вы не совершите COMMIT, что реализуется путем усечения, удаления или аннулирования журнала.

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

24
ответ дан Joe Koberg 25 September 2019 в 08:02
поделиться

Почему Вы хотите?

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

2
ответ дан Charlie Martin 25 September 2019 в 08:02
поделиться

Как сказал Джо, журнал создается при запуске транзакции, а SQLlite создает его при запуске оператора.

Чтобы очистить этот журнал и убедиться, что заявление было передано для использования БД:

sqlite3_finalize(insertStmt);   

До вашего закрытия.

Файл .journal исчезнет, ​​и все ваши данные будут в безопасности в вашей БД.

Надеюсь, это поможет.

Крис.

2
ответ дан PyjamaSam 25 September 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: