【发布时间】:2020-03-24 18:43:10
【问题描述】:
正在使用 ipython 历史命令,尝试结合 -l 和 -g 来搜索有限数量的历史,并使用 -n 来查看命令来自哪个会话。
突然我收到一个错误(我希望我的屏幕上仍然有确切的文本)......关于历史线程遇到的错误并停止,并且不会保存更多历史记录。它还谈到了“数据库锁定”。在那之后,%history 不会回忆任何历史记录。
所以我停止并重新启动了 ipython,发现它只有来自新重新启动的会话的历史记录。我停止并再次重新启动,甚至尝试关闭并重新打开我的 WSL-Ubuntu 窗口,但没有成功。看来我失去了几个月和几个月的历史。
然后我决定查找 ipython 历史文件,发现了这个小宝石:
dino@DINO:~$ ls -l $( ipython locate profile default )
total 14132
drwxrwxrwx 1 dino dino 512 Jul 17 2019 db
-rw-r--r-- 1 dino dino 14442496 Mar 24 14:16 history-corrupt-2020-03-24T14.17.27.480963.sqlite
-rw-r--r-- 1 dino dino 28672 Mar 24 14:24 history.sqlite
drwxrwxrwx 1 dino dino 512 Mar 18 2019 log
drwx------ 1 dino dino 512 Mar 18 2019 pid
drwx------ 1 dino dino 512 Mar 18 2019 security
drwxrwxrwx 1 dino dino 512 Mar 18 2019 startup
哇!看看! 14442496 Mar 24 14:16 history-corrupt-2020-03-24T14.17.27.480963.sqlite
看起来 ipython 毕竟实际上保存了所有的历史! 现在的问题是,有没有人知道如何从 sqlite 文件中找到并删除损坏并恢复我的全部或大部分历史记录?
【问题讨论】:
标签: sqlite ipython ipython-magic