sql - OperationalError:尝试在 Google Cloud 应用程序上写入只读数据库
问题描述
最近,我一直在尝试部署一个写入 SQLite 数据库的交互式 Google App Engine,它在本地运行应用程序时工作正常,但是通过服务器运行它时,我收到错误:
OperationalError: attempt to write a readonly database
我尝试更改我的权限.db
,.sql
但没有运气。
任何建议将不胜感激。
解决方案
App Engine 具有完全只读的文件系统,即不能修改任何文件。但是,顾名思义,它有 /tmp/ 文件夹来存储临时文件。它实际上使用 RAM,所以如果数据库很大,这不是一个好主意。
在应用程序启动时,您可以将原始数据库文件复制到 /tmp/ 文件夹,然后从那里使用它。
这行得通。但是,当应用节点扩展到 0 时,数据库中的所有更改都会丢失。应用的每个节点都有自己的数据库副本,并且节点之间不会共享数据。如果您需要在应用节点之间共享数据,最好使用 CloudSQL。
推荐阅读
- python - 如何根据 Django 1.11 和 postgres 9.6 中的嵌套 JSONField 注释计数
- java - Java验证bean:验证枚举字段值
- string - 如何将具有多个参数的单个字符串传递给 std::process::Command?
- excel - Countif 公式从日历表中计算天数
- python - openpyxl - 如何将图像添加到工作表?
- java - MySQLNonTransientConnectionException 无法创建到数据库服务器的连接
- e-commerce - SagePay:不接受测试卡详细信息
- php - 如何在 HTML 中查找数字?
- kubernetes - 如何在更改后强制 Kubernetes CoreDNS 重新加载其 Config Map?
- php - 即使数据正确且有效,validate 方法也总是返回 false [Yii2]