问题描述
好吧,我进入了石墨和石墨网,并陷入了“异常值:尝试编写只读数据库”错误。我已经在数据库本身上尝试过chmod和chown,而我仍然收到此错误。
文件位于/opt/graphite/storage/graphite.db下,它获得了rwx-rwx-rwx(chmod 777)烫发,我尝试以所有者的身份访问www-data并将其重新放回根目录,从而导致出现相同的错误。 / p>
Environment:
Request Method: GET
Request URL: http://IP:8000/composer
Django Version: 1.8.18
Python Version: 2.7.16
Installed Applications:
('graphite.account','graphite.browser','graphite.composer','graphite.dashboard','graphite.events','graphite.functions','graphite.metrics','graphite.render','graphite.tags','graphite.url_shortener','graphite.whitelist','django.contrib.auth','django.contrib.sessions','django.contrib.admin','django.contrib.contenttypes','django.contrib.messages','django.contrib.staticfiles','tagging')
Installed Middleware:
('graphite.middleware.LogExceptionsMiddleware','django.middleware.common.CommonMiddleware','django.middleware.gzip.GZipMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.contrib.auth.middleware.RemoteUserMiddleware')
Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request,*callback_args,**callback_kwargs)
File "/opt/graphite/webapp/graphite/composer/views.py" in composer
27. profile = getProfile(request)
File "/opt/graphite/webapp/graphite/user_util.py" in getProfile
35. return default_profile()
File "/opt/graphite/webapp/graphite/user_util.py" in default_profile
51. 'password': '!'})
File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py" in manager_method
127. return getattr(self.get_queryset(),name)(*args,**kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in get_or_create
407. return self._create_object_from_params(lookup,params)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in _create_object_from_params
439. obj = self.create(**params)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in create
348. obj.save(force_insert=True,using=self.db)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in save
734. force_update=force_update,update_fields=update_fields)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in save_base
762. updated = self._save_table(raw,cls,force_insert,force_update,using,update_fields)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in _save_table
846. result = self._do_insert(cls._base_manager,fields,update_pk,raw)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in _do_insert
885. using=using,raw=raw)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py" in manager_method
127. return getattr(self.get_queryset(),**kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in _insert
920. return query.get_compiler(using=using).execute_sql(return_id)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py" in execute_sql
974. cursor.execute(sql,params)
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py" in execute
79. return super(CursorDebugWrapper,self).execute(sql,params)
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py" in execute
64. return self.cursor.execute(sql,params)
File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py" in __exit__
98. six.reraise(dj_exc_type,dj_exc_value,traceback)
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py" in execute
64. return self.cursor.execute(sql,params)
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py" in execute
318. return Database.Cursor.execute(self,query,params)
Exception Type: OperationalError at /composer
Exception Value: attempt to write a readonly database
那是来自error.log:
解决方法
自己解决。不是数据库本身,而是没有写权限的文件夹!