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

使用DuckDB Python时查询中断致SQLite数据库文件失效求助

解决DuckDB连接SQLite后数据库失效的问题
  • 清理DuckDB临时缓存
    异常中断后DuckDB的临时缓存可能残留损坏状态,找到系统临时目录(Linux是/tmp,Windows是C:\Users\<用户名>\AppData\Local\Temp),删除所有以duckdb_开头的文件。

  • 重新初始化连接,规避旧缓存
    改用ATTACH方式连接SQLite,避免复用损坏的缓存,示例代码:

    import duckdb
    # 先建立内存连接,再附加SQLite数据库
    conn = duckdb.connect(database=':memory:')
    conn.execute("ATTACH '你的SQLite文件路径.db' AS sqlite_db (TYPE SQLITE, READ_ONLY);")
    # 执行查询
    res = conn.execute("SELECT * FROM sqlite_db.目标表").fetchall()
    

    不要直接用duckdb.connect('你的SQLite文件.db'),这种方式容易残留本地状态文件。

  • 检查并修复SQLite数据库完整性
    用原生SQLite工具执行完整性检查:

    PRAGMA integrity_check;
    

    如果查出损坏,用备份恢复的方式最稳妥:

    sqlite3 你的SQLite文件.db ".backup 备份文件.db"
    

    之后用备份文件重新连接。

  • 升级DuckDB到最新版本
    旧版DuckDB对SQLite的兼容性可能存在bug,执行升级:

    pip install --upgrade duckdb
    
  • 后续使用时确保连接正常回收
    用上下文管理器包裹连接操作,避免异常中断时的资源泄漏:

    import duckdb
    with duckdb.connect() as conn:
        conn.execute("ATTACH '你的SQLite文件路径.db' AS sqlite_db (TYPE SQLITE, READ_ONLY);")
        results = conn.execute("SELECT * FROM sqlite_db.目标表").fetchall()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:46:07