2011-10-15 27 views
32

Veritabanını kapatan, silen ve bir sınama düzeniyle değiştiren bazı sınamalar uyguladıktan sonra uygulamam ve veritabanı dosyasının durumuyla ilgili garip davranışlar görüyorum. Veritabanı dosyasını hata ayıklama bilgisayarımdaki bir araçla incelediğimde, uygulamanın kendisinin bildirdiği gibi uyuşmuyor. Bu garip davranışın this bug ile ilgili olması mümkündür. Sqlite veritabanlarında .db-shm ve .db-wal uzantıları nelerdir?

Ben veritabanı olarak aynı temel ada sahip iki dosya olduğunu fark (normal .db uzantılı.) Dosya uzantıları .db-shm ve .db-wal vardır ve her .db dosyanın zaman damgası daha yenidir.

Bunların bir çeşit geçici dosya olduğunu varsayalım. Ancak, uygulamanın sonlandırılıp sonlandırılmadığını merak ediyorum, silinmemeli mi? Daha da önemlisi, uygulamada işletim sistemi tarafından sonlandırılmadan önce .db dosyasında hangi verilerin depolandığına bakılır. Bu doğru mu?

+0

@ satur9nine bu çok garip .. Başka birinin kodunu güncellemem istendi .. ve test sırasında çekirdek veri kullanımının iOS 6.x ile gayet iyi çalıştığını farkettim .. ama sonra iOS 7'de test ettiğimde .x .. ile sonuçlandı .db-shm' ve .db-wal' .. bu kimseye oldu mu? – abbood

+2

iOS 7'de bu işlemlerin tümünü içerdiği görülüyor. Db dosyası benim için boş bir veritabanı. Ben db "gerçek" içeriğini görmek için üç dosya kapmak gerekir. –

cevap

21

Doğru, bunlar SQLite tarafından oluşturulan geçici dosyalardır. Ana db'yi manuel olarak siliyorsanız, muhtemelen bunları da silmeniz gerekir. WAL'i toplayabildiğim kadarıyla, bir işlem başarısız olduğunda SQLite'nin değişiklikleri geri almasını sağlayan geri alma günlüğünün yerini alır. SQLite bunları nasıl kullanır ve neden bu kadar uzun süre tutulurlar SQLite'nin yazarlarına bağlıdırlar fakat genel olarak SQLite oldukça sağlam bir şekilde kaya gibi görünürler, bu yüzden onlar hakkında çok fazla endişelenmem. Daha fazla bilgi için buraya bakın:

http://www.sqlite.org/fileformat2.html#walindexformat

Bu dosyalar SQLite 3.7 yeni bir özelliktir. Onların varoluşunun sizin belirttiğiniz hata ile ilgili olup olmadığından emin değilim, ancak hata raporu zaten bir çalışma olduğunu gösteriyor.

+2

Peki ya .shm dosyası. Biraz ışık tutabilir misin? –

+0

Bağlantıya göre: mmapped dosyası, veritabanıyla aynı dizinde bulunur ve eklenmiş bir "-shm" son ekine sahip veritabanıyla aynı ada sahiptir. – satur9nine