关于python:Django登录错误:IIS中“试图编写只读数据库”

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管理登录页面,输入您以超级用户身份创建的用户名。

  • 我的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

    希望它将节省一些时间...

    .------------------------------------------------- ----------------------------------