1. ホーム
  2. パイソン

django がデータベースにアクセスすると、エラー OperationalError: 読み取り専用のデータベースを書き込もうとしました。

2022-02-28 23:08:34

環境 django1.8、python2.7、centos



django がデータベースにアクセスするとエラーが発生します エラーメッセージは以下の通りです

トレースバック (最新の呼び出し)。



  ファイル "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", 行 149, in get_response



    response = self.process_exception_by_middleware(e, request)



  ファイル "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", 行 147, in get_response



    response = wrapped_callback(request, *callback_args, **callback_kwargs)



  ファイル "/usr/local/lib/python2.7/site-packages/django/views/decorators/cache.py", 行 57, in _wrapped_view_func



    response = view_func(request, *args, **kwargs)



  ファイル "/usr/local/lib/python2.7/site-packages/django/contrib/admin/sites.py", 行 413, in login



    return login(request, **defaults)



  ファイル "/usr/local/lib/python2.7/site-packages/django/contrib/auth/views.py", ライン 49, in inner



    return func(*args, **kwargs)



  ファイル "/usr/local/lib/python2.7/site-packages/django/views/decorators/debug.py", 行 76, in sensitive_post_parameters_wrapper



    return view(request, *args, **kwargs)



  ファイル "/usr/local/lib/python2.7/site-packages/django/utils/decorators.py", 行 149, in _wrapped_view



    response = view_func(request, *args, **kwargs)



  ファイル "/usr/local/lib/python2.7/site-packages/django/views/decorators/cache.py", 行 57, in _wrapped_view_func



    response = view_func(request, *args, **kwargs)



  ファイル "/usr/local/lib/python2.7/site-packages/django/contrib/auth/views.py", 行 76, in login



    auth_login(request, form.get_user())



  ファイル "/usr/local/lib/python2.7/site-packages/django/contrib/auth/__init__.py", 行 110, in login



    リクエスト.セッション.cycle_key()



  ファイル "/usr/local/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py", line 302, in cycle_key



    self.create()



  ファイル "/usr/local/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py", 行 53, in create



    self.save(must_create=True)



  ファイル "/usr/local/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py", 行 86, in save



    obj.save(force_insert=must_create, using=using)



  ファイル "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", 行 700, in save



    force_update=force_update, update_fields=update_fields)



  ファイル "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", 行 728, in save_base



    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)



  ファイル "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", 行 812, in _save_table



    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)



  ファイル "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", 行 851, in _do_insert



    using=using, raw=raw)



  ファイル "/usr/local/lib/python2.7/site-packages/django/db/models/manager.py", 行 122, in manager_method



    return getattr(self.get_queryset(), name)(*args, **kwargs)



  ファイル "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", 行 1039, in _insert



    return query.get_compiler(using=using).execute_sql(return_id)



  ファイル "/usr/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 1060, in execute_sql



    cursor.execute(sql, params)



  ファイル "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", 行 79, in execute



    return super(CursorDebugWrapper, self).execute(sql, params)



  ファイル "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", 行 64, in execute



    return self.cursor.execute(sql, params)



  ファイル "/usr/local/lib/python2.7/site-packages/django/db/utils.py", 行 95, in __exit__.



    6.reraise(dj_exc_type, dj_exc_value, traceback)



  ファイル "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", 行 64, in execute



    return self.cursor.execute(sql, params)



  ファイル "/usr/local/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", 行 323, in execute



    return Database.Cursor.execute(self, クエリ, パラメータ)



OperationalError: 読み取り専用のデータベースを書き込もうとしました。







解決策

1. django プロジェクトの settings.py を通して、関連するデータベースファイルの名前を確認することができます。



...



DATABASES = {



    'default'です。{ <未定義



        'ENGINE': 'django.db.backends.sqlite3',



        'NAME': os.path.join(BASE_DIR, ') db.sqlite3 '),



    }   



}



...







2. djangoプロジェクトにあるデータベースファイル( db.sqlite3 ) とデータベースファイルがあるフォルダのパーミッションを昇格させます。

chmod 777 db.sqlite3

cd ...

chmod 777 *

3. 再度データベースにアクセスすればOKです。