Django 登录错误:在 IIS 中“尝试写入只读数据库”
Posted
技术标签:
【中文标题】Django 登录错误:在 IIS 中“尝试写入只读数据库”【英文标题】:Django login error: “attempt to write a readonly database” in IIS 【发布时间】:2018-03-07 00:45:34 【问题描述】:我在 IIS 10 中安装了 Django Web 应用程序,并将一些模型应用到 db.sqlite3
,但是当我尝试登录 django/admin/login 时遇到错误:OperationalError at /admin/login/attempt to write a readonly database
。
我在sqlite3 error attempt to write a read only database、Django admin backend、attempt-to-write-a-readonly-database-django 中找到了解决此问题的方法,并且都提到要更改数据库文件夹的权限。我通过取消选择选项Read-only (Only applies to files in folder)
更改了该文件夹的权限,但似乎当我点击Apply
按钮时它没有做任何更改,因为我再次检查该文件夹并且它激活了Read-only
选项。
问题:
-
有没有办法通过powershell中的任何命令终端更改此权限?
是否必须在 IIS 中执行任何额外步骤才能使
db.sqlite3
正常工作?
欢迎任何帮助!
【问题讨论】:
【参考方案1】:对于您的第一个问题,您可以使用icacls
。请看帖子How to grant permission to users for a directory using command line in Windows?
对于第二个问题,您需要在您的database
上提供write
权限。执行此操作的一种安全方法是使用与您在 Django 管理工具中登录机器相同的用户名。这样,如果您是 Web 应用程序的管理员,那么您是唯一可以直接访问 db.sqlite3
的用户。
不建议授予其他用户在db.sqlite3
中的写入权限,因为此数据库通常存储您的网络应用程序的正确功能所必需的数据,即,Django 模型存储在此数据库中,如果它们被更改那么您的网络应用程序可能会停止正常工作。
按照以下步骤解决Django登录错误尝试在IIS中写入只读数据库:
在您的 Django Web 应用程序中创建超级用户:
python manage.py createsuperuser
用户名必须与您用于登录计算机的用户名相同。密码不必与您用于登录机器的用户名密码相同。
搜索您的db.sqlite3
并单击鼠标右键,然后点击“属性”选项。
Permissions for Users
框中验证写入选项在允许列中没有选中标记。
单击“编辑”选项,选择“用户”组,然后在“用户权限”框中选择“写入”选项。单击“应用”然后单击“确定”,然后再次单击“应用”和“确定”。
返回您的 Django 管理登录页面,输入您创建为超级用户的用户名。
【讨论】:
我该怎么做? @AlejandroBautistaRamos,您使用的是 Windows 对吗?? 是的,我试图在 powershell 中查找 chmod 等效项。 似乎我的chmod
在命令提示符中未被识别为内部或外部命令。
@AlejandroBautistaRamos,抱歉 chmod
在我认为的 Windows 中不可用。【参考方案2】:
我在 IIS 上遇到了这个问题,用这种方法解决了:
首先去这个link(从10:30到11:12观看)并创建组用户。
然后按照下图中的数字:
enter image description here 并且必须重启网络服务。
如果在此之后出现“无法打开数据库文件”错误,您可以打开此 link 并查看 @Arkady 的第四个解决方案。
:
.---------------------------------------------- ----------------------------------
@Arkady 说:我在 IIS 中打开 Sqlite 数据库时遇到问题
(0x80004005): unable to open database file unable to open database file
帮助我解决问题的是将应用程序池的“身份”更改为“本地系统”
应用程序池 -> DefaultAppPool(或您正在使用的其他池)-> 高级设置 -> 身份 -> 本地系统
希望它能节省一些人的时间......
.---------------------------------------------- --------------------------------------
【讨论】:
以上是关于Django 登录错误:在 IIS 中“尝试写入只读数据库”的主要内容,如果未能解决你的问题,请参考以下文章