Django login error: “attempt to write a readonly database” in IIS
我在IIS 10中安装了Django Web应用程序,并在db.sqlite3中应用了一些模型,但是当我尝试登录django / admin / login时遇到错误:OperationalError at /admin/login/attempt to write a readonly database。
我在sqlite3错误中发现了针对此问题的解决方案,尝试写一个只读数据库,Django admin后端,尝试写一个readonly-database-django,所有这些都提到更改数据库文件夹的权限。 我通过取消选择选项Read-only (Only applies to files in folder)来更改了该文件夹的权限,但是当我按下Apply按钮时,它似乎没有任何更改,因为我再次检查了该文件夹,并激活了Read-only选项。
问题:
有什么办法可以通过Powershell中的任何命令终端更改此权限?
我是否必须在IIS中执行任何其他步骤才能使db.sqlite3工作?
欢迎任何帮助!
对于第一个问题,可以使用icacls。请参阅如何在Windows中使用命令行向目录授予用户权限的文章?
对于第二个问题,您需要在database上提供write权限。一种安全的方法是使用与您在Django管理工具中登录计算机所使用的用户名相同的用户名。这样,如果您是Web应用程序的管理员,则您是唯一可以直接访问db.sqlite3的用户。
不建议授予其他用户db.sqlite3的写入权限,因为此数据库通常存储Web应用程序正确功能所必需的数据,即Django模型存储在此数据库中,如果更改了它们,则您的Web应用可能无法正常运行。
请执行以下步骤来解决Django登录错误尝试在IIS中编写只读数据库的尝试:
使用以下命令在Django网络应用中创建超级用户:
1
| python manage.py createsuperuser |
用户名必须与用于登录计算机的用户名相同。密码不必与您用来登录计算机的用户名的密码相同。
搜索您的db.sqlite3,然后单击鼠标右键,然后单击"属性"选项。
选择"安全性"选项卡,您将看到具有相应特权的组或用户名。通常,SYSTEM和Administrators会检查所有特权,但是除非您是其中之一,否则您将不得不修改Users组,因为在该组中是用于登录计算机的用户名。
选择"用户"组,然后在Permissions for Users框中确认"写入"选项的"允许"列中没有选中的标记。
单击"编辑"选项,选择"用户"组,然后在"用户权限"框中选择"写"选项。单击"应用",然后单击"确定",然后再次单击"应用",然后单击"确定"。
返回到Django管理登录页面,输入您以超级用户身份创建的用户名。
-
我怎样才能做到这一点?
-
@AlejandroBautistaRamos,您正在使用Windows,对吗?
-
是的,我正在尝试在powershell中寻找chmod等效项。
-
似乎我的chmod在命令提示符下未被识别为内部或外部命令。
-
@AlejandroBautistaRamos,抱歉,我认为Windows中无法使用chmod。
-
使用此链接在Windows上更改文件权限
-
@AlejandroBautistaRamos,如果我的解决方案对您有帮助,请投票并选择答案,如果有任何问题,请在下面的评论中让我知道。 感谢您的合作。
-
已经解决了问题,但我不得不在您的回答中描述更多步骤。 请检查更改。
-
@AlejandroBautistaRamos,感谢您编写详细的答案。 非常感谢。
我的IIS存在此问题,并通过以下方式解决了:
首先转到此链接(从10:30到11:12观看)并创建Group User。
然后按照下图中的数字进行操作:
在此处输入图片说明
并重新启动Web服务必须完成。
如果在此之后收到"无法打开数据库文件"错误,则可以打开此链接,并从@Arkady查看第四个解决方案。
:
.------------------------------------------------- -------------------------------
@Arkady说:我在IIS中打开Sqlite数据库时遇到问题
1
| (0x80004005): unable to open database file unable to open database file |
帮助我解决问题的是将应用程序池的"身份"更改为" LocalSystem"
应用程序池-> DefaultAppPool(或您正在使用的其他池)->高级设置->身份-> LocalSystem
希望它将节省一些时间...
.------------------------------------------------- ----------------------------------