Sık sık çöker (Zotero) bir programım var, yeniden başlatılmadan (ki gerçekten kaçınmak istiyorum) SQLite veritabanı kilitli ve yeniden başlatılan program tarafından kullanım için erişilemez. Yani bu (benim durumumda gerçek dosya yerine jenerik isim, db.sqlite
kullanılarak zotero.sqlite
) çalışmaz: bir cevap here dayanarakBir SQLite veritabanı etkin bir şekilde kilidini
sqlite3 db.sqlite
sqlite> .backup main backup.sqlite
Error: database is locked
denedim:
echo ".dump" | sqlite3 db.sqlite | sqlite3 db.sqlite2
mv db.sqlite2 db.sqlite
db.sqlite2
olduğunu 0KB, bu açıkça işe yaramadı. another thread esinlenerek, ben de db.sqlite
için dosya boyutuyla ilgili olarak biraz daha küçük db.sqlite2
yol açar
echo '.dump' | sqlite3 db.sqlite > db.dump
cat db.dump | sqlite3 db.sqlite2
mv db.sqlite2 db.sqlite
çalıştı ve Zotero'nun (veritabanı gerektirir dosyası) içeriğini tanımak mümkün değildi.
Yani bu bunu yapmanın çok kaba kuvvet yolu gibi görünüyor, ama çalıştı:
cp -pv db.sqlite db.sqlite2
rm -f db.sqlite
mv db.sqlite2 db.sqlite
bu çözüme herhangi sakınca varsa ve diğer yöntemler bu daha önce önerilmiştir merak ediyorum.
Kilitlenen işlemin hala takılmadığından emin misiniz? –
Eh, 'ps -aux | grep zotero' zombi süreci gibi görünen '' zotero-bin '' 'i verir ve ana süreci '1' dir, ben de onu öldüremem. Bu neden rm -f'ye sahip olduğumu açıklıyor? – hatmatrix
'init' otomatik olarak zombileri toplar. Bu zotero sürecinin durumu (STAT) nedir? –