In short, it happens when the application which writes to the sqlite database 
does not have write permission.

You have to add writing rights to the directory in which your sqlite database 
is stored. So running chmod 664 /srv/mysite should help.
This is a security risk, so better solution is to change the owner of your 
database to www-data:
chown www-data:www-data /srv/mysite
chown www-data:www-data /srv/mysite/DATABASE.sqlite
On 3 May 2020, 22:31 +0300, Amina Anna Mahamane.O <[email protected]>, wrote:
>
> <image2.jpeg><image3.jpeg>
> Envoyé de mon iPhone
>
> > Le 3 mai 2020 à 15:25, Jorge Gimeno <[email protected]> a écrit :
> >
> >
> >
> > > On Sun, May 3, 2020 at 3:46 AM Amina Anna Mahamane.O 
> > > <[email protected]> wrote:
> > > > I read , but I didn’t help me , I don’t really know hiw to process . 
> > > > Can you explain me ?
> > >
> > > I'm not a linux expert, so other folks can feel free to correct me.
> > >
> > > In linux, the user that creates the file in a directory they have access 
> > > to has "ownership" of the file.  With that, the user can both read and 
> > > write to the file.  All other users (except for sudo users, I believe) 
> > > have read-only access by default.
> > >
> > > That's what's happening here.  When you ran migrations as the currently 
> > > logged in user, your user has read and write permissions.  Apache, 
> > > however, runs as a different user, so it cannot write to the database.
> > >
> > > That answer I linked did have some things to try, in addition to a link 
> > > to more general question about permissions.  The file you would need to 
> > > change permissioins on (since you're using sqlite3, which is file based) 
> > > is named (without quotes) "db.sqlite3'.
> > >
> > > Hope this helps!
> > >
> > > -Jorge
> > > >
> > > > Envoyé de mon iPhone
> > > >
> > > > > Le 3 mai 2020 à 05:21, Jorge Gimeno <[email protected]> a écrit :
> > > > >
> > > > >
> > > > >
> > > > > > On Sat, May 2, 2020 at 8:09 PM Amina Anna Mahamane.O 
> > > > > > <[email protected]> wrote:
> > > > > > > Hello , I started learning how to use django . I made a project 
> > > > > > > without a virtual environnement and without apach2 andn mod wsgi .
> > > > > > > Now am I trying to do a project with those ones . I am a beginner 
> > > > > > > .When I try to log in to the administration interface, the error 
> > > > > > > below appears.I've been looking for solutions on the internet for 
> > > > > > > hours and hours but I didn't find anything which can help me to 
> > > > > > > solve my problem. I have no idea what could have caused this 
> > > > > > > error.I really need help, it's urgent. I wish someone can answer 
> > > > > > > to me in french but if it is not possible, help me anyway, I will 
> > > > > > > manage.
> > > > > > >
> > > > > > > OperationalError at /admin/login/
> > > > > > > attempt to write a readonly database
> > > > > > > Request Method:
> > > > > > > POST
> > > > > > > Request URL:
> > > > > > > http://www.djangoproject.localhost/admin/login/?next=/admin/
> > > > > > > Django Version:
> > > > > > > 3.0.5
> > > > > > > Exception Type:
> > > > > > > OperationalError
> > > > > > > Exception Value:
> > > > > > > attempt to write a readonly database
> > > > > > > Exception Location:
> > > > > > > /home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py
> > > > > > >  in execute, line 396
> > > > > > > Python Executable:
> > > > > > > /home/kirikou/mysite/env/bin/python
> > > > > > > Python Version:
> > > > > > > 3.7.5
> > > > > > > Python Path:
> > > > > > > ['/home/kirikou/mysite',
> > > > > > > '/usr/lib/python37.zip',
> > > > > > > '/usr/lib/python3.7',
> > > > > > > '/usr/lib/python3.7/lib-dynload',
> > > > > > > '/home/kirikou/mysite/env/lib/python3.7/site-packages']
> > > > > > > Server time:
> > > > > > > Sat, 2 May 2020 21:39:20 +0000
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Environment:
> > > > > > >
> > > > > > >
> > > > > > > Request Method: POST
> > > > > > > Request URL: 
> > > > > > > http://www.djangoproject.localhost/admin/login/?next=/admin/
> > > > > > >
> > > > > > > Django Version: 3.0.5
> > > > > > > Python Version: 3.7.5
> > > > > > > Installed Applications:
> > > > > > > ['applis.apps.ApplisConfig',
> > > > > > >  'django.contrib.admin',
> > > > > > >  'django.contrib.auth',
> > > > > > >  'django.contrib.contenttypes',
> > > > > > >  'django.contrib.sessions',
> > > > > > >  'django.contrib.messages',
> > > > > > >  'django.contrib.staticfiles',
> > > > > > >  'django.contrib.admindocs']
> > > > > > > Installed Middleware:
> > > > > > > ['django.middleware.security.SecurityMiddleware',
> > > > > > >  'django.contrib.sessions.middleware.SessionMiddleware',
> > > > > > >  'django.middleware.common.CommonMiddleware',
> > > > > > >  'django.middleware.csrf.CsrfViewMiddleware',
> > > > > > >  'django.contrib.auth.middleware.AuthenticationMiddleware',
> > > > > > >  'django.contrib.messages.middleware.MessageMiddleware',
> > > > > > >  'django.middleware.clickjacking.XFrameOptionsMiddleware']
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Traceback (most recent call last):
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/backends/utils.py",
> > > > > > >  line 86, in _execute
> > > > > > >     return self.cursor.execute(sql, params)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py",
> > > > > > >  line 396, in execute
> > > > > > >     return Database.Cursor.execute(self, query, params)
> > > > > > >
> > > > > > > The above exception (attempt to write a readonly database) was 
> > > > > > > the direct cause of the following exception:
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/core/handlers/exception.py",
> > > > > > >  line 34, in inner
> > > > > > >     response = get_response(request)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/core/handlers/base.py",
> > > > > > >  line 115, in _get_response
> > > > > > >     response = self.process_exception_by_middleware(e, request)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/core/handlers/base.py",
> > > > > > >  line 113, in _get_response
> > > > > > >     response = wrapped_callback(request, *callback_args, 
> > > > > > > **callback_kwargs)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/views/decorators/cache.py",
> > > > > > >  line 44, in _wrapped_view_func
> > > > > > >     response = view_func(request, *args, **kwargs)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/contrib/admin/sites.py",
> > > > > > >  line 407, in login
> > > > > > >     return LoginView.as_view(**defaults)(request)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/views/generic/base.py",
> > > > > > >  line 71, in view
> > > > > > >     return self.dispatch(request, *args, **kwargs)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/utils/decorators.py",
> > > > > > >  line 43, in _wrapper
> > > > > > >     return bound_method(*args, **kwargs)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/views/decorators/debug.py",
> > > > > > >  line 76, in sensitive_post_parameters_wrapper
> > > > > > >     return view(request, *args, **kwargs)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/utils/decorators.py",
> > > > > > >  line 43, in _wrapper
> > > > > > >     return bound_method(*args, **kwargs)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/utils/decorators.py",
> > > > > > >  line 130, in _wrapped_view
> > > > > > >     response = view_func(request, *args, **kwargs)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/utils/decorators.py",
> > > > > > >  line 43, in _wrapper
> > > > > > >     return bound_method(*args, **kwargs)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/views/decorators/cache.py",
> > > > > > >  line 44, in _wrapped_view_func
> > > > > > >     response = view_func(request, *args, **kwargs)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/contrib/auth/views.py",
> > > > > > >  line 63, in dispatch
> > > > > > >     return super().dispatch(request, *args, **kwargs)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/views/generic/base.py",
> > > > > > >  line 97, in dispatch
> > > > > > >     return handler(request, *args, **kwargs)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/views/generic/edit.py",
> > > > > > >  line 142, in post
> > > > > > >     return self.form_valid(form)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/contrib/auth/views.py",
> > > > > > >  line 92, in form_valid
> > > > > > >     auth_login(self.request, form.get_user())
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/contrib/auth/__init__.py",
> > > > > > >  line 107, in login
> > > > > > >     request.session.cycle_key()
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/contrib/sessions/backends/base.py",
> > > > > > >  line 310, in cycle_key
> > > > > > >     self.create()
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/contrib/sessions/backends/db.py",
> > > > > > >  line 55, in create
> > > > > > >     self.save(must_create=True)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/contrib/sessions/backends/db.py",
> > > > > > >  line 87, in save
> > > > > > >     obj.save(force_insert=must_create, force_update=not 
> > > > > > > must_create, using=using)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/models/base.py",
> > > > > > >  line 746, in save
> > > > > > >     force_update=force_update, update_fields=update_fields)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/models/base.py",
> > > > > > >  line 784, in save_base
> > > > > > >     force_update, using, update_fields,
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/models/base.py",
> > > > > > >  line 887, in _save_table
> > > > > > >     results = self._do_insert(cls._base_manager, using, fields, 
> > > > > > > returning_fields, raw)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/models/base.py",
> > > > > > >  line 926, in _do_insert
> > > > > > >     using=using, raw=raw,
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/models/manager.py",
> > > > > > >  line 82, in manager_method
> > > > > > >     return getattr(self.get_queryset(), name)(*args, **kwargs)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/models/query.py",
> > > > > > >  line 1204, in _insert
> > > > > > >     return 
> > > > > > > query.get_compiler(using=using).execute_sql(returning_fields)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/models/sql/compiler.py",
> > > > > > >  line 1391, in execute_sql
> > > > > > >     cursor.execute(sql, params)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/backends/utils.py",
> > > > > > >  line 100, in execute
> > > > > > >     return super().execute(sql, params)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/backends/utils.py",
> > > > > > >  line 68, in execute
> > > > > > >     return self._execute_with_wrappers(sql, params, many=False, 
> > > > > > > executor=self._execute)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/backends/utils.py",
> > > > > > >  line 77, in _execute_with_wrappers
> > > > > > >     return executor(sql, params, many, context)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/backends/utils.py",
> > > > > > >  line 86, in _execute
> > > > > > >     return self.cursor.execute(sql, params)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/utils.py",
> > > > > > >  line 90, in __exit__
> > > > > > >     raise dj_exc_value.with_traceback(traceback) from exc_value
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/backends/utils.py",
> > > > > > >  line 86, in _execute
> > > > > > >     return self.cursor.execute(sql, params)
> > > > > > >   File 
> > > > > > > "/home/kirikou/mysite/env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py",
> > > > > > >  line 396, in execute
> > > > > > >     return Database.Cursor.execute(self, query, params)
> > > > > > >
> > > > > > > Exception Type: OperationalError at /admin/login/
> > > > > > > Exception Value: attempt to write a readonly database
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > You received this message because you are subscribed to the 
> > > > > > > Google Groups "Django users" group.
> > > > > > > To unsubscribe from this group and stop receiving emails from it, 
> > > > > > > send an email to [email protected].
> > > > > > > To view this discussion on the web visit 
> > > > > > > https://groups.google.com/d/msgid/django-users/e3757628-10c9-4251-ac79-1e892f4348c7%40googlegroups.com.
> > > > > >
> > > > > > I don't use Apache much, but I found this on a Google search.  
> > > > > > Running migrations from the terminal uses the current logged in 
> > > > > > user (unless one uses sudo, which I wouldn't recommend).  Unlike 
> > > > > > other servers, it seems that Apache runs not with the currently 
> > > > > > logged in user, but it's own user.  So the database can be read, 
> > > > > > but can't be written to because of permissions.  See if this helps: 
> > > > > >  
> > > > > > https://stackoverflow.com/questions/17641993/operationalerror-attempt-to-write-a-readonly-database-in-ubuntu-server
> > > > > >
> > > > > > -Jorge
> > > > > --
> > > > > You received this message because you are subscribed to the Google 
> > > > > Groups "Django users" group.
> > > > > To unsubscribe from this group and stop receiving emails from it, 
> > > > > send an email to [email protected].
> > > > > To view this discussion on the web visit 
> > > > > https://groups.google.com/d/msgid/django-users/CANfN%3DK_XW%2BM9c530nv%3D%3D76GG%3DD1D0z8VaiL_8aMFNtBLk5X8jw%40mail.gmail.com.
> > > > --
> > > > You received this message because you are subscribed to the Google 
> > > > Groups "Django users" group.
> > > > To unsubscribe from this group and stop receiving emails from it, send 
> > > > an email to [email protected].
> > > > To view this discussion on the web visit 
> > > > https://groups.google.com/d/msgid/django-users/B5CF2B50-6AF4-4713-8F67-640B8AE68CD5%40gmail.com.
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Django users" group.
> > To unsubscribe from this group and stop receiving emails from it, send an 
> > email to [email protected].
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msgid/django-users/CANfN%3DK_xrj19Cgq-723aZtQ3cniU2D4eqLd%2BE-2t7D21KmVKuQ%40mail.gmail.com.
> --
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/BBDF477B-23D1-486F-BD52-286FB94D1E20%40gmail.com.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/4c27a69e-7054-4061-bd0c-2a90d0c1ef5b%40Spark.

Reply via email to