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

求助:Google Cloud文件写入失败及本地SQLite数据库只读错误

解决sqlite3 "attempt to write a readonly database" 及Google Cloud文件写入问题

本地开发环境的只读数据库错误修复

  • 检查文件与目录权限
    确保数据库文件和所在目录都具备写入权限:

    • Linux/macOS终端执行:
      chmod 664 Database/accounts.db
      chmod 775 Database
      
    • Windows系统右键accounts.db和Database文件夹,在「属性-安全」中给当前用户添加写入权限。
  • 使用绝对路径连接数据库
    Flask运行时的工作目录可能和预期不一致,用项目根目录的绝对路径避免路径错误:

    import os
    import sqlite3
    from flask import Flask
    
    app = Flask(__name__)
    # 拼接数据库绝对路径
    db_full_path = os.path.join(app.root_path, "Database", "accounts.db")
    con = sqlite3.connect(db_full_path)
    
  • 替换不安全的SQL拼接方式
    原代码用f-string直接拼接SQL存在注入风险,改用参数化查询同时避免语法错误:

    cur.execute("INSERT INTO Requests (Type, Argument, Priority, Time) VALUES (?,?,?,?)", (a, b, c, d))
    

Google Cloud环境的文件写入问题解决

Google Cloud的App Engine、Cloud Run等服务默认使用只读文件系统,无法直接写入本地sqlite数据库,推荐以下方案:

  • 改用Cloud SQL托管数据库:直接连接Google Cloud提供的Cloud SQL服务(支持MySQL、PostgreSQL,也可兼容sqlite使用),规避本地文件写入限制。
  • 禁用本地sqlite存储:若必须用文件存储,可考虑将数据库文件存到Cloud Storage,但sqlite本身不适合远程文件系统,会存在性能和数据一致性问题,不建议采用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:58:31