Common Django errors and how to fix them: no such table: main.auth_user__old; ModuleNotFoundError: No module named ‘sqlparse’
I've recently been teaching myself Django. I was working on creating a new web app to handle the backend for some IoT projects I've been working on and recently came across two errors. In case anyone else comes across them, I will post the silver bullets below to hopefully save you some time.
1. no such table: main.auth_user__old
This was an unhandled exception that occurred whenever I tried to POST data from the Django admin:
|Exception Value:||no such table: main.auth_user__old|
|Exception Location:||/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py in execute, line 296|
|Python Path:||[‘/home/engineer/Projects/WEATHERSTATION/weathersite’, ‘/home/engineer/anaconda3/envs/djangoEnv/lib/python35.zip’, ‘/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5’, ‘/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/plat-linux’, ‘/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/lib-dynload’, ‘/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/site-packages’]|
Request Method: POST Request URL: http://127.0.0.1:8000/admin/weatherstation/weather_recording/add/ Django Version: 2.1.1 Exception Type: OperationalError Exception Value: no such table: main.auth_user__old Exception Location: /home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py in execute, line 296 Python Executable: /home/engineer/anaconda3/envs/djangoEnv/bin/python Python Version: 3.5.6 Python Path: ['/home/engineer/Projects/WEATHERSTATION/weathersite', '/home/engineer/anaconda3/envs/djangoEnv/lib/python35.zip', '/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5', '/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/plat-linux', '/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/lib-dynload', '/home/engineer/anaconda3/envs/djangoEnv/lib/python3.5/site-packages']
Solution: This problem is described in Issue #21982. It has since been fixed. Since I use Anaconda ("conda") as my package manager, the simple fix for me was to just update my Django environment to the latest version.
2. ModuleNotFoundError: No module named 'sqlparse'
I thought I was home free at this point now that I had updated my Django environment to the latest version in conda, but alas that was not the case. This time, I received the following error:
Traceback (most recent call last): File "manage.py", line 15, in <module> execute_from_command_line(sys.argv) File "/home/engineer/anaconda3/envs/djangoEnvNew/lib/python3.7/site-packages/django/core/management/__init__.py", line 381 ... File "/home/engineer/anaconda3/envs/djangoEnvNew/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py", line 28, in <module> from .introspection import DatabaseIntrospection # isort:skip File "/home/engineer/anaconda3/envs/djangoEnvNew/lib/python3.7/site-packages/django/db/backends/sqlite3/introspection.py", line 4, in <module> import sqlparse ModuleNotFoundError: No module named 'sqlparse'
Thankfully the error stack is pretty helpful here. The most recent call with the error "ModuleNotFoundError: No module named 'sqlparse'" is pretty descriptive. To resolve this error, you simply need to install the module with the following command (while in your virtual environment):
conda install sqlparse
That's it! Hopefully this helps someone else. As always, let me know if you have any questions!