复制CoreData sqlite3文件,但副本不显示任何表

时间:2015-09-29 18:24:01

标签: ios core-data sqlite

我有一个非常数据敏感的应用程序,只是为了确保在进行应用程序更新并升级CoreData sqlite文件时没有数据丢失,我们获取CoreData .sqlite文件的副本并将其上传到服务器。那部分似乎工作得很好。该文件的大小完全相同,当我diff它与原始文件相同时。

但是,当我打开原始.sqlite文件并发出.tables命令时,我会看到所有相应的表,但是当我打开复制的.sqlite文件并发出.tables命令时一无所获。

使用与模拟器关联的目录,我可以使用sqlite3来检查原始的.sqlite文件和文件的预上载副本,我看到了所有的表:

Kenny-iMac:~/Library/Developer/CoreSimulator/Devices/C9E435A0-F438-45B0-914A-0E586A12589B/data/Containers/Data/Application/0B0C4673-99AF-4EEF-A9BE-654C155BB167/Documents$ sqlite3 MyApp.sqlite
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite> .tables
ZBASECLONABLEENTITY   ZREPORTCONFIGURATION  Z_MODELCACHE        
ZCHANGERECORD         Z_3LABELS             Z_PRIMARYKEY        
ZOWNER                Z_METADATA          
sqlite> .quit
Kenny-iMac:~/Library/Developer/CoreSimulator/Devices/C9E435A0-F438-45B0-914A-0E586A12589B/data/Containers/Data/Application/0B0C4673-99AF-4EEF-A9BE-654C155BB167/Documents$ sqlite3 backup.MyApp.v1.0-to-v1.1.3.1234567.sqlite 
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite> .tables
ZBASECLONABLEENTITY   ZREPORTCONFIGURATION  Z_MODELCACHE        
ZCHANGERECORD         Z_3LABELS             Z_PRIMARYKEY        
ZOWNER                Z_METADATA          
sqlite> .quit
Kenny-iMac:~/Library/Developer/CoreSimulator/Devices/C9E435A0-F438-45B0-914A-0E586A12589B/data/Containers/Data/Application/0B0C4673-99AF-4EEF-A9BE-654C155BB167/Documents$ 

但是,当我在上传的文件中使用sqlite3时,我看不到任何表格:

Kenny-iMac:~/Sites/myapp.com/sqlite_backups$ sqlite3 backup.MyApp.v1.0-to-v1.1.3.1234567.sqlite
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite> .tables
sqlite> .quit
Kenny-iMac:~/Sites/myapp.com/sqlite_backups$

原始文件大小和备份文件的文件大小相同(880640):

Kenny-Mac: [simulator directory] $ ls -l
total 3648
-rw-r--r--  1 kenny  staff  921600 Sep 29 08:52 MyApp.sqlite
-rw-r--r--  1 kenny  staff   32768 Sep 29 08:51 MyApp.sqlite-shm
-rw-r--r--  1 kenny  staff       0 Sep 29 08:52 MyApp.sqlite-wal
-rw-r--r--  1 kenny  staff  880640 Sep 24 16:00 backup.MyApp.v1.0-to-v1.1.3.1234567.sqlite
-rw-r--r--  1 kenny  staff   32768 Sep 29 11:12 backup.MyApp.v1.0-to-v1.1.3.1234567.sqlite-shm
-rw-r--r--  1 kenny  staff       0 Sep 29 08:52 backup.MyApp.v1.0-to-v1.1.3.1234567.sqlite-wal
Kenny-Mac: [simulator directory] $

上传副本的大小相同(880640):

Kenny-iMac:~/Sites/herdboss.com/sqlite_backups$ ls -l
total 1720
-rw-r--r--  1 _www  wheel  880640 Sep 29 08:44 backup.HerdBoss.v1.0-to-v1.1.3.1234567.sqlite.oid.0.unverified
Kenny-iMac:~/Sites/herdboss.com/sqlite_backups$

我还将它们与diff进行了比较,它们是相同的。

为什么我看不到备份副本中的表格?

1 个答案:

答案 0 :(得分:2)

您没有提及必需的-shm-wal文件,因此您也需要上传它们。您还需要打开具有相应类型的商店文件,我认为这是记录的。