1

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

OperationalError: attempt to write a readonly database

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

任何建议将不胜感激。

4

2 回答 2

1

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

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

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

于 2020-07-21T14:45:54.587 回答
1

您可以尝试更改目录的权限并检查 .sqllite 文件是否存在且可写

但一般来说,在应用程序引擎上工作时依赖磁盘数据并不是一个好主意,因为磁盘存储是短暂的(除非您在 flex 上使用永久性磁盘),但即便如此,最好使用云数据库解决方案

于 2020-07-08T16:48:22.497 回答