我有一个非常数据敏感的应用程序,只是为了确保在进行应用程序更新并升级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
进行了比较,它们是相同的。
为什么我看不到备份副本中的表格?
答案 0 :(得分:2)
您没有提及必需的-shm
和-wal
文件,因此您也需要上传它们。您还需要打开具有相应类型的商店文件,我认为这是记录的。