从iOS中的数据库删除某些行后,Sqlite文件大小不会减小

Nil*_*wal 5 sqlite ios

我正在以编程方式尝试SQLite在删除一些行后检查iphone上存储的数据库的大小。记录被删除,但文件大小保持不变。从iOS中的sqlite删除记录后,有什么方法可以获取正确的文件大小?请参见下面的代码:

NSString* databasePath = [[NSString alloc]
                              initWithString: [self.documentsDirectory stringByAppendingPathComponent: self.databaseFilename]];
unsigned long long fileSize = [[[NSFileManager defaultManager]
                                    attributesOfItemAtPath:databasePath error:nil] fileSize];
Run Code Online (Sandbox Code Playgroud)

谢谢!

我不能使用vaccum方法,因为它会删除所有记录。我仅删除50%的数据,而不是全部。因此,这不是此问题的重复项, 在“ DELETE FROM table”之后更改sqlite文件大小

Ste*_*sen 11

删除记录时,SQLite 数据库文件的大小不一定会缩小。如果没有启用auto_vacuum,它永远不会收缩,除非你对其执行vacuum操作。

请参阅https://sqlite.org/lang_vacuum.htmlhttps://sqlite.org/pragma.html#pragma_auto_vacuum