亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何解鎖SQLite數據庫?

如何解鎖SQLite數據庫?

大話西游666 2019-07-20 15:15:22
如何解鎖SQLite數據庫?sqlite> DELETE FROM mails WHERE (`id` = 71);SQL error: database is locked如何解鎖數據庫,這樣才能正常工作?
查看完整描述

3 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊


刪除日志文件聽起來是個糟糕的主意。它允許sqite在崩潰后將數據庫回滾到一致狀態。如果在數據庫處于不一致狀態時刪除它,則會留下損壞的數據庫。引用方形遺址:

如果確實發生崩潰或停電,并且磁盤上保留了一個熱日志,則必須將原始數據庫文件和熱日志保留在磁盤上,并帶有它們的原始名稱,直到數據庫文件被另一個SQLite進程打開并回滾為止。[.]

我們懷疑SQLite恢復的常見故障模式是這樣發生的:發生電源故障?;謴碗娫春?,善意的用戶或系統管理員開始四處查看磁盤是否損壞。他們看到了他們的數據庫文件,名為“import ant.data”。他們可能對這個文件很熟悉。但在崩盤后,也有一個熱門雜志名為“重要數據日記”。然后,用戶刪除熱門日志,認為他們正在幫助清理系統。除了用戶教育之外,我們不知道有什么辦法可以阻止這種情況。

回滾應該在下一次打開數據庫時自動發生,但如果進程無法鎖定數據庫,則會失敗。正如其他人所說,造成這種情況的一個可能原因是,另一個進程目前正在進行之中。如果數據庫位于NFS卷上,則另一種可能是過期的NFS鎖。在這種情況下,解決方法是將數據庫文件替換為未鎖定在NFS服務器上的新副本(MV database.db源.db;cp initial.db database.db)。請注意,sqlitFAQ建議注意并發訪問NFS卷上的數據庫,因為NFS文件鎖定的實現存在缺陷。

我無法解釋為什么刪除日志文件會讓您鎖定以前無法鎖定的數據庫。那是可復制的嗎?

順便說一句,日志文件的存在并不一定意味著發生了崩潰,也不一定意味著需要回滾更改。Sqlitt有幾種不同的日志模式,并且在持久化或截斷模式中,它總是將-日記文件放在適當的位置,并更改內容以指示是否有部分事務要回滾。



查看完整回答
反對 回復 2019-07-28
  • 3 回答
  • 0 關注
  • 341 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號