我想重命名数据库文件。这些任务似乎很容易。
1) 我关闭数据库2)重命名.db文件3)重命名.db日志文件4)打开数据库
然而,如果在第2步之后和第3步之前,系统会崩溃(我知道可能性很低,但…),会发生什么?
我注意到,根据Android版本的不同,有时在关闭数据库后,.db日志文件的大小为0(例如Android 4.0.4),但有时它相当大(例如.db文件大小的50%)(例如Android 4.2.2)。如果大小为0,我肯定认为没有问题(在上述场景中丢失.db文件可能不会导致任何数据丢失)。但是,当.db jurnal文件相当大时,这是否意味着打开没有.db日志的.db文件(它将使用旧名称)会导致任何数据丢失?
有没有办法在一个"事务"中重命名两个文件(要么都重命名,要么都不重命名)?
如果我想共享我的数据库(例如,我想通过电子邮件将其发送给我的朋友),该怎么办?这是必须发送两个文件.db和.db日志,还是只发送.db文件就足够了?
如果应用程序在事务处于活动状态时崩溃,数据库将在下次打开数据库时自动进行回滚。
如果你打开了一个数据库(可能又关闭了它),但没有活动的事务,并且你的应用程序没有崩溃,仍在运行,那么你就知道数据库文件处于一致状态,你可以忽略日志文件。(如果日志模式设置为DELETE,则不会有-journal
文件。)
(注意:在WAL模式下,不能忽略-wal
文件。)