2012-09-14 9 views
7

Ben benim WAL modundayken veritabanına yazma tarafından bloke oluyor okur görüyorum."select" deyimi hazırlanırken SQLite DB (WAL ile) kilitlendi - neden? Neden olarak stumped -

Benim kurulumu:

  • SQLite3 veritabanı, journal_mode = Wal, senkron = NORMAL
  • Mulitple C++ süreçler (3 tam olarak) veritabanını kullanır - açık bu süreç içinde herhangi bir yöntem ve kendi olmayan kapatmak sqlite3_open_v2 ile bağlantılı bağlantı. veri ekleme edilir
  • Yöntemler (yani yalnızca ifadeleri seçerim) Ben olması gerektiğine inanıyoruz SQLITE_OPEN_READONLY modunda WAL modunda

yılında db açmak SQLITE_OPEN_READWRITE modunda veritabanından okuma

  • Yöntemleri db açın Bir yazar oluşurken eşzamanlı okuyucular olması mümkün.

    Oysa ben sqlite3_prepare_v2 yanlış yapıyor olabilir ne

    hangi engellenir okuyucuyu neden oluyor kullanarak select deyimi hazırlıyorum zaman "veritabanı kilitli" görüyorum? Bir "Oku" nun aslında ne olduğunu yanlış anladım mı?

    Herhangi bir ipucu,

    sayesinde :) bu veritabanı hatası kilitli neden bir durumdur çünkü her sqlite3_step sonra sqlite3_reset olup olmadığını

  • cevap

    0

    çek takdir. sqlite3_prepare bir açıklama hazırlanması ve sqlite3_step ile yürüttükten sonra, her zaman sqlite3_reset ile sıfırlamak gerekir.

    sqlite3_reset (S) arabirimi, hazırlanan deyimi S'yi programın başına olarak geri döndürür.

    umut bu sorunu çözer ... !!!

    İlgili konular