jupyter notebook 無法打開.ipynb文件,也無法新建.ipynb文件,報錯為【sqlite3. OperationalError: database is locked】
排查問題。
先關閉這個notebook,再用terminal重新打開一個新的notebook,查看terminal的印屏traceback,發現最近的相關文件路徑是…xx/nbformat/sign.py文件。
這個報錯之前,就出現過notebook卡頓,逐漸打不開的問題,且報錯 【OsError: Too many open files】
順着這個路子,先是ulimit查看open files -n的數值是1024,可是改了2048以后又自動恢復了默認值。
遂重啟jupyter notebook試試,發現可以打開交互頁面了,但打不開文件,而且報了一個未知錯誤???
所以,采用重啟方案或者擴大文件句柄數都沒解決問題。
這時,打開文件時就出現新報錯【sqlite3, operationaleeror: database is locked】
翻遍所有中文博客,都沒找到解決方案,遂考慮重裝,然鵝jupyter無論如何也卸載不干凈,只對jupyter notebook簡單重裝了一下,也沒有解決問題。
【重點】
於是開始嘗試英文檢索問題,終於!在github的jupyter項目下的issue中找到了同樣的問題……o(╥﹏╥)o
【貼個地址:https://github.com/jupyter/nbformat/issues/52】
【jupyter-notebook的doc文檔:https://jupyter-notebook.readthedocs.io/en/latest/config.html】
根據這個帖子,總體來說,這個問題是基於安裝在NFS上的jupyter notebook的,看下來發現是和簽名文件有關(nbsignatures.db,具體是什么我也不清楚,看起來像是一個存儲了notebook簽名的sqlite的文件)。此時,有人建議移除這個歷史文件,於是有人把文件重命名了但也米有用。
最后,找到一位的建議對我的問題起作用了:就是更改你的.jupyter/jupyter_notebook_config.py文件(就是安裝jupyter時的那個配置文件)。
【具體解決步驟】
進入隱藏文件 .jupyter 找到 jupyter_notebook_config.py文件;
文件里繼續找,找到一行 c.NotebookNotary.db_file=''
可以讀到注釋寫到,這里就是存儲notebook簽名文件的地方,默認值'',可以使用':memory:'來關閉sqlite對文件系統的寫操作。
於是,
vi config //進行文件編輯 c.NotebookNotary.db_file=':memory:' //然后:wq保存退出
之后,重啟notebook
jupyter notebook
打開頁面,成功打開ipynb文件,恢復正常。
最后關閉臨時的notebook,重新打開一個后台運行的notebook。
nohup jupyter notebook &
以上。
問題解決。