Jupyter-Notebook无法创建ipynb文件

文章目录

    • 概述
    • 排查问题
    • 恢复方法
    • 参考资料

概述

用户反馈在 Notebook 上无法创建 ipynb 文件,并且会返回以下的错误。

报错的信息是: Unexpected error while saving file: Untitled5.ipynb attempt to write a readonly database
在这里插入图片描述

排查问题

这个是一个比较新的问题,因为团队之前也没有人遇见过,不过通过报错信息,很容易定位到这个 issue Creating Jupyter Notebook Failed: error to write a readonly database #5321。初步看,我们这里遇到的问题跟 issue 上是一样的。

虽然没有仔细看过 Jupyterhub 和 Jupyterlab 的代码,但是我们可以根据一些报错信息来进行进一步的排查。

[I 2024-01-18 09:48:31.909 SingleUserLabApp handlers:172] Creating new notebook in
[E 2024-01-18 09:48:31.910 SingleUserLabApp filemanager:449] Error while saving file: Untitled5.ipynb attempt to write a readonly databaseTraceback (most recent call last):File "/usr/local/lib/python3.9/site-packages/jupyter_server/services/contents/filemanager.py", line 434, in saveself.check_and_sign(nb, path)File "/usr/local/lib/python3.9/site-packages/jupyter_server/services/contents/manager.py", line 651, in check_and_signself.notary.sign(nb)File "/usr/local/lib/python3.9/site-packages/nbformat/sign.py", line 462, in signself.store.store_signature(signature, self.algorithm)File "/usr/local/lib/python3.9/site-packages/nbformat/sign.py", line 204, in store_signatureif not self.check_signature(digest, algorithm):File "/usr/local/lib/python3.9/site-packages/nbformat/sign.py", line 239, in check_signatureself.db.execute(sqlite3.OperationalError: attempt to write a readonly database
[W 2024-01-18 09:48:31.910 SingleUserLabApp web:1796] 500 POST /user/oscar01.liu/api/contents?1705542511901 (10.80.50.125): Unexpected error while saving file: Untitled5.ipynb attempt to write a readonly database
[W 2024-01-18 09:48:31.910 SingleUserLabApp handlers:649] Unexpected error while saving file: Untitled5.ipynb attempt to write a readonly database
[E 2024-01-18 09:48:31.911 SingleUserLabApp log:178] {"Cookie": "jupyterhub-user-oscar01.liu=[secret]; _xsrf=[secret]; jupyterhub-user-oscar01.liu-oauth-state=[secret]","Accept-Language": "zh-CN,zh;q=0.9","Accept-Encoding": "gzip, deflate","Referer": "http://gd17-llm-002-jupyterhub.xxx.com/user/oscar01.liu/lab/workspaces/auto-P","Origin": "http://gd17-llm-002-jupyterhub.xxx.com","Accept": "*/*","Content-Type": "text/plain;charset=UTF-8","User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","Authorization": "token [secret]","X-Xsrftoken": "2|b9010b04|67edc801549f9be14554782ddb629233|1703062619","Content-Length": "29","X-Scheme": "http","X-Forwarded-Proto": "http,http","X-Forwarded-Port": "80,80","X-Forwarded-Host": "gd17-llm-002-jupyterhub.xxx.com","X-Forwarded-For": "10.80.50.125,10.122.196.115","X-Real-Ip": "10.80.50.125","X-Request-Id": "e6b76c0d4424e0f93a90fd0b10fc473b","Host": "gd17-llm-002-jupyterhub.xxx.com","Connection": "close"}

当尝试创建 ipynb 文件的时候,Notebook 的容器会打出报错的日志,从日志上看,感觉就是创建 ipynb 的时候,Notebook 会有读写数据库这样的操作,结合 issue 和用户的行为,大概可以判断,是因为用户动了 $HOME/.local/share/jupyter 目录下的一些配置文件,而这个目录内,有一个 sqlite3 实现的内存数据库,会记录一些本地 Notebook 的信息,这个文件就是 nbsignatures.db,如下图。

在这里插入图片描述

我们可以通过 python 来打开这 db 文件,查看一下,具体有什么信息在里面,具体的代码如下。

import sqlite3# 连接到 SQLite 数据库文件
conn = sqlite3.connect('$HOME/.local/share/jupyter/nbsignatures.db')# 创建一个 cursor
cursor = conn.cursor()# 查询 nbsignatures 表的所有数据
print("Data in nbsignatures table:")
cursor.execute("SELECT * FROM nbsignatures;")
for row in cursor.fetchall():print(row)# 关闭 cursor 和连接
cursor.close()
conn.close()

在这里插入图片描述

恢复方法

恢复的手段,要么是让用户把相关的文件和文件目录恢复,如果实在无法找回,最好的办法就是重启一下 Notebook 的容器了。

参考资料

  1. Creating Jupyter Notebook Failed: error to write a readonly database #5321

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/414303.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动手学深度学习6 自动求导

自动求导 1. 自动求导2. 自动求导实现1. 示例 y 2 X T X y2X^TX y2XTX 关于列向量x求导。2. 非标量变量的反向传播3. 分离计算4. Python控制流的梯度计算 QA 视频: https://www.bilibili.com/video/BV1KA411N7Px/?spm_id_fromautoNext&vd_sourceeb04c9a33e87…

node.js(express.js)+mysql实现登录功能

文章目录 前言实现步骤 实现步骤一、检测登录表单的数据是否合法(3)新建schema/user.js(4)在routes/use.js中引入schema/user.js中的方法reg_login_schema,代码如下: 二、根据用户名查询用户的数据三、判断…

触摸按键控制LED灯

目录 1.理论 2.代码 2.1 touch_ctrl_led.v 2.2 tb_touch_ctrl_led 1.理论 以上的波形图的touch_flag是采用组合逻辑的方式产生的。 以上的touch_flag是采用时序逻辑产生的,时序逻辑会延迟一拍。 以上是上升沿和下降沿的组合逻辑和时序逻辑实现,逻辑或…

柏曼、好视力、书客护眼台灯值得入手吗?热门台灯多方位测评对比

近年来学生近视的现象越来越严重了,而且近视的年龄也越来越小了,不少还没开始上小学的孩子,就已经戴上了厚厚的近视眼镜。而那些高年级的学生更是近视的重灾区,每天不仅需要高强度的学习和长时间用眼,甚至晚上都还需要…

27k+ star!有了它 再也不怕忘记linux命令了

简介 linux-command 是一个收集Linux命令的仓库,当前仓库搜集了 580 多个 Linux 命令,是一个非盈利性的仓库,生成了一个 web 网站方便使用,目前网站没有任何广告,内容包含 Linux 命令手册、详解、学习,内容…

护眼灯真能护眼吗知乎?真正能护眼的护眼台灯推荐

最近去了一些有小孩的家庭进行拜访,发现许多父母通常直接使用家中的灯光或者购买几十块钱的超市台灯供孩子写作业使用。然而,他们最后还得花费大量金钱为孩子配眼镜,这种做法实际上得不偿失,因为他们并未意识到家庭灯光对视力的影…

【Docker】Nacos的单机部署及集群部署

一、Nacos的介绍 Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 动态服务发现:Nacos支持DNS与RPC服务发现,提供原生SDK、OpenAPI等多种服务注册方式和DNS、HTTP与API等多种服务发现方式。服务健康监测:Nacos提供…

[渗透测试学习] Hospital - HackTheBox

文章目录 信息搜集getshell提权信息搜集 nmap扫描一下端口 发现8080端口和443端口有http服务 然后发现3389端口是启用了ms-wbt-server服务 在对443端口的扫描没有收获,并且只有邮箱登录界面无法注册 接着看向8080端口,我们随便注册用户登录后发现有文件上传功能 getshell …

RDMA Scatter Gather List详解

1. 前言 在使用RDMA操作之前,我们需要了解一些RDMA API中的一些需要的值。其中在ibv_send_wr我们需要一个sg_list的数组,sg_list是用来存放ibv_sge元素,那么什么是SGL以及什么是sge呢?对于一个使用RDMA进行开发的程序员来说&#…

Solana Mobile开启第二代Saga手机预售,怎么购买Solana Mobile?

PANews 1月17日消息,Solana Mobile官方宣布开启其第二代Saga手机(Chapter 2)的预售,预购押金为450美元,预计将于2025年上半年发货。同时,Chapter 2的发售将会包括推荐(Referrals)和积…

问题:Feem无法发送信息OR无法连接(手机端无法发给电脑端)

目录 前言 问题分析 资源、链接 其他问题 前言 需要在小米手机、华为平板、Dell电脑之间传输文件,试过安装破解的华为电脑管家、小米的MIUI文件传输等,均无果。(小米“远程管理”ftp传输倒是可以,但速度太慢了,且…

“GPC爬虫池有用吗?

作为光算科技的独有技术,在深入研究谷歌爬虫推出的一种吸引谷歌爬虫的手段 要知道GPC爬虫池是否有用,就要知道谷歌爬虫这一概念,谷歌作为一个搜索引擎,里面有成百上千亿个网站,对于里面的网站内容,自然不可…