首页 > 解决方案 > OperationalError:尝试在 Google Cloud 应用程序上写入只读数据库

问题描述

最近,我一直在尝试部署一个写入 SQLite 数据库的交互式 Google App Engine,它在本地运行应用程序时工作正常,但是通过服务器运行它时,我收到错误:

OperationalError: attempt to write a readonly database

我尝试更改我的权限.db.sql但没有运气。

任何建议将不胜感激。

标签: sqlgoogle-app-enginegunicornreadonlyoperationalerror

解决方案


App Engine 具有完全只读的文件系统,即不能修改任何文件。但是,顾名思义,它有 /tmp/ 文件夹来存储临时文件。它实际上使用 RAM,所以如果数据库很大,这不是一个好主意。

在应用程序启动时,您可以将原始数据库文件复制到 /tmp/ 文件夹,然后从那里使用它。

这行得通。但是,当应用节点扩展到 0 时,数据库中的所有更改都会丢失。应用的每个节点都有自己的数据库副本,并且节点之间不会共享数据。如果您需要在应用节点之间共享数据,最好使用 CloudSQL。


推荐阅读