You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发Telegram Bot遇sqlite3无法打开数据库文件错误求助

解决sqlite3.OperationalError: unable to open database file错误

问题背景

开发Telegram Bot(基于GitHub代码)时,遇到sqlite无法打开数据库文件的错误,错误栈指向Pyrogram的FileStorage.open()方法中的sqlite3.connect()调用。

错误信息

Traceback (most recent call last):
  File "G:\Spotify Downloader\mbot\__main__.py", line 30, in <module>
    Mbot().run()
  File "G:\Spotify Downloader\venv\lib\site-packages\pyrogram\methods\utilities\run.py", line 80, in run
    run(self.start())
  File "G:\Python\lib\asyncio\base_events.py", line 646, in run_until_complete
    return future.result()
  File "G:\Spotify Downloader\mbot\__init__.py", line 76, in start
    await super().start()
  File "G:\Spotify Downloader\venv\lib\site-packages\pyrogram\methods\utilities\start.py", line 58, in start
    is_authorized = await self.connect()
  File "G:\Spotify Downloader\venv\lib\site-packages\pyrogram\methods\auth\connect.py", line 40, in connect
    await self.load_session()
  File "G:\Spotify Downloader\venv\lib\site-packages\pyrogram\client.py", line 562, in load_session
    await self.storage.open()
  File "G:\Spotify Downloader\venv\lib\site-packages\pyrogram\storage\file_storage.py", line 58, in open
    self.conn = sqlite3.connect(str(path), timeout=1, check_same_thread=False)
sqlite3.OperationalError: unable to open database file

排查与解决步骤

1. 验证数据库路径与目录权限

  • 打印确认路径:在FileStorage.open()方法开头添加路径打印,确认生成的数据库文件路径是否正确:
    async def open(self):
        path = self.database
        print(f"Target database path: {path}")  # 新增打印
        file_exists = path.is_file()
        # 后续代码不变
    
    检查输出路径是否存在拼写错误、是否包含特殊字符或空格。
  • 确保目录存在:数据库文件所在的工作目录(workdir)必须存在,否则sqlite无法创建文件。可以在代码中提前创建目录:
    async def open(self):
        path = self.database
        path.parent.mkdir(parents=True, exist_ok=True)  # 确保父目录存在
        file_exists = path.is_file()
        # 后续代码不变
    
  • 检查目录权限:右键工作目录→属性→安全,确保当前运行Python的用户拥有读写权限,必要时勾选「完全控制」。

2. 处理文件锁定或占用

  • 删除旧session文件:如果程序之前异常崩溃,可能导致.session文件被锁定。手动删除对应路径下的.session文件,重新运行程序。
  • 检查进程占用:确认没有其他程序(如文件管理器、杀毒软件)正在读取或修改该.session文件,关闭相关进程后重试。

3. 规避路径格式问题

  • 移除路径空格:Windows系统中,路径包含空格可能导致解析异常。尝试将工作目录改为无空格路径(如G:\SpotifyDownloader\mbot),重新配置程序路径后运行。

4. 虚拟环境权限排查

  • 管理员身份运行:如果使用虚拟环境(venv),尝试以管理员身份启动命令行,再运行Python脚本,避免权限不足问题。
  • 检查虚拟环境目录权限:确认虚拟环境所在文件夹的权限设置,确保当前用户可读写其中文件。

内容的提问来源于stack exchange,提问作者Anshul Gada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:10:28