Résolue

Probleme DB MySQL sur PythonAnywhere

# Bases de données # Django # Hébergement

Christian Aucane

J'ai changé ma base de donnée sqlite3 pour une base de donnée MySQL, en local tout fonctionne mais en production ca me met une erreur 500.
Je comprend pas pourtant j'ai fait exactement la meme chose, je vous met le log d'erreur :

2023-05-05 09:51:54,164: Internal Server Error: /
Traceback (most recent call last):
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/contrib/sessions/backends/base.py", line 187, in get_session
return self._session_cache
AttributeError: 'SessionStore' object has no attribute '_session_cache'
NO MATCH
During handling of the above exception, another exception occurred:
NO MATCH
Traceback (most recent call last):
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py", line 328, in execute
return super().execute(query, params)
sqlite3.OperationalError: no such table: django_session
NO MATCH
The above exception was the direct cause of the following exception:
NO MATCH
Traceback (most recent call last):
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, callback_args, **callback_kwargs)
File "/home/LaListeGourmande/website/src/core/views.py", line 8, in home
return render(request, "core/home.html")
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/shortcuts.py", line 24, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/loader.py", line 62, in render_to_string
return template.render(context, request)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/base.py", line 175, in render
return self.render(context)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/base.py", line 167, in _render
return self.nodelist.render(context)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/base.py", line 1005, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/base.py", line 1005, in
return SafeString("".join([node.render_annotated(context) for node in self]))
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated
return self.render(context)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/loader_tags.py", line 157, in render
return compiled_parent._render(context)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/base.py", line 167, in _render
return self.nodelist.render(context)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/base.py", line 1005, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/base.py", line 1005, in
return SafeString("".join([node.render_annotated(context) for node in self]))
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated
return self.render(context)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/defaulttags.py", line 314, in render
match = condition.eval(context)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/defaulttags.py", line 877, in eval
return self.value.resolve(context, ignore_failures=True)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/base.py", line 715, in resolve
obj = self.var.resolve(context)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/base.py", line 847, in resolve
value = self._resolve_lookup(context)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/template/base.py", line 880, in _resolve_lookup
current = current[bit]
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/utils/functional.py", line 266, in inner
self._setup()
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/utils/functional.py", line 419, in _setup
self._wrapped = self._setupfunc()
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/contrib/auth/middleware.py", line 25, in
request.user = SimpleLazyObject(lambda: get_user(request))
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/contrib/auth/middleware.py", line 11, in get_user
request._cached_user = auth.get_user(request)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/contrib/auth/__init_
.py", line 191, in get_user
user_id = get_user_session_key(request)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/contrib/auth/__init_
.py", line 60, in get_user_session_key
return get_user_model()._meta.pk.to_python(request.session[SESSION_KEY])
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/contrib/sessions/backends/base.py", line 53, in __getitem_

return self._session[key]
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/contrib/sessions/backends/base.py", line 192, in _get_session
self._session_cache = self.load()
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/contrib/sessions/backends/db.py", line 42, in load
s = self._get_session_from_db()
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/contrib/sessions/backends/db.py", line 32, in _get_session_from_db
return self.model.objects.get(
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(
args, **kwargs)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/models/query.py", line 633, in get
num = len(clone)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/models/query.py", line 380, in __len_

self.fetch_all()
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/models/query.py", line 1881, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/models/query.py", line 91, in __iter_

results = compiler.execute_sql(
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1560, in execute_sql
cursor.execute(sql, params)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 67, in execute
return self.execute_with_wrappers(
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/utils.py", line 91, in __exit_

raise dj_exc_value.with_traceback(traceback) from exc_value
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
File "/home/LaListeGourmande/website/venv/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py", line 328, in execute
return super().execute(query, params)
django.db.utils.OperationalError: no such table: django_session

Hello,

as tu fait

python manage.py migrate

dans ta console pythonanywhere avec l'environnement virtuel activé ?

Et tu as modifier le settings.py avec les infos qu'il faut pour Mysql et ajouter les variables d'environement ?

Christian Aucane

oui

hello , "oui" pour les 2 questions ?
tu peux mettre ton fichier settings.py ?

oui pour les 2

du coup je suis repassé en sqlite3 mais j'avais mis ca :

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': env("DB_NAME"),
        'USER': env("DB_USER"),
        'PASSWORD': env("DB_PASSWORD"),
        'HOST'=env("DB_HOST"),
        'PORT'=env("DB_PORT"),
    }
}

avec toutes les variables correctes dans mon fichier .env

Salut Christian,

peut être que c'est correct mais je n'ai jamais vu le env("DB_NAME") c'est plutôt os.environ.get("DB_NAME")

aussi où as tu placé ce fichier .env ? Il faut être sûr que ton app arrive à trouver le fichier.

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.