Tôi gặp sự cố với ứng dụng mới trên SDK iPhone bằng SQLite làm phụ trợ DB.Hình ảnh đĩa cơ sở dữ liệu sqlite không đúng định dạng trên iPhone SDK
Thỉnh thoảng, ứng dụng của tôi sẽ ngừng tải dữ liệu vào UITableViews của tôi và sau khi tải xuống thiết bị DB qua Trình tổ chức, tôi có thể truy cập DB SQLite qua dòng lệnh. Tôi có thể truy vấn một số bảng tốt nhưng không truy vấn được những người khác mà không nhận được lỗi "Lỗi SQL: hình ảnh đĩa cơ sở dữ liệu bị sai". Xem phiên sqlite bên dưới:
SQLite version 3.6.17
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select * from user;
1|[email protected]|cpjolicoeur||4d055e38bb1d3758|image/gif|cartoonme_avatar.gif||Craig|Jolicoeur|1|1
sqlite> select * from item;
SQL error: database disk image is malformed
sqlite>
Trong ví dụ này bảng người dùng của tôi không đúng định dạng, tương ứng với những gì tôi thấy trong ứng dụng của tôi nơi các mục không tải. Ứng dụng không bị lỗi, dữ liệu không tải do lỗi không đúng định dạng này.
Bất kỳ ý tưởng nào tại sao điều này đang xảy ra? Suy nghĩ duy nhất của tôi là có thể DB bị hỏng vì tôi đang viết cho DB SQLite qua một luồng nền trong ứng dụng. Tôi tải xuống dữ liệu từ máy chủ web qua NSOperationQueue trong luồng nền và cập nhật DB SQLite với dữ liệu đã tải xuống. Sẽ viết cho DB trong một chủ đề nền (trong khi có khả năng đọc từ các chủ đề chính) bị hỏng DB, hoặc là nó cái gì khác?
Xóa các tập tin wal và shm hoàn toàn đã làm nó cho tôi! Cảm ơn –