2

我有一个使用 SQLite 数据库的 django 应用程序。我使用 git 将更改推送到我的 EC2 实例,该实例在弹性 IP 上运行网站。该站点本身可以​​运行,但是当我尝试登录到管理界面时,我从 django 收到两个错误之一:

attempt to write a readonly database

或者

unable to open database file

似乎 chmod u+rw 导致第一个错误, a+rw 导致第二个错误,但我不确定发生了什么。我本地机器上的测试服务器按预期工作。

我意识到 SQLite 对于生产来说可能是一个糟糕的选择,但该站点不会有太多流量,而且我将是唯一一个使用管理界面或写入数据库的人。如果有人有设置 MySQL 或 Postgres 并以某种方式同步数据库内容的解决方案,我也会接受。

4

2 回答 2

3

经过大量研究,我找到了解决方案。我只在我的 EC2 服务器中定义了一个用户,但显然 Apache 需要以用户身份访问www-data

sudo chown www-data /projectdir
sudo chown www-data /projectdir/sqlite.db
于 2012-08-21T15:13:31.763 回答
0

您的应用程序是否在多个线程中运行?

问题是 sqlite3 数据库不能在 Django 应用程序的多个线程之间共享。我不确定这是一般的 sqlite3 错误、Django 错误还是只是故意的。也许其他用户想出了处理它的方法。我没有在生产服务器上使用 PostgreSQL 或 MySQL。

如果您的网站流量非常低,您可以将您的网络服务器配置设置为单线程(并在单个进程中)运行您的应用程序。这将具有与在本地运行 Django 测试服务器类似的行为(和限制)。

于 2012-08-21T06:49:34.650 回答