The Django syntax error on migrating is very annoying, specially when you don’t find any error when looking for one. This post contains a working solution.
Table of contents
- I get a syntax error when trying to migrate in Django
- The solution
I get a syntax error when trying to migrate in Django
When using the migrate commands in Django
$ python manage.py makemigrations
$ python manage.py migrate
You might get this ugly error:
File "/my/path/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers return executor(sql, params, many, context)
File "/my/path/lib/python3.11/site-packages/django/db/backends/utils.py", line 100, in _execute with self.db.wrap_database_errors:
File "/my/path/lib/python3.11/site-packages/django/db/utils.py", line 91, in exit_ raise dj_exc_value.with_traceback(traceback) from exc_value
File "/my/path/lib/python3.11/site-packages/django/db/backends/utils.py", line 105, in _execute return self,cursor.execute(sq1,2arams)
File "/my/path/lib/python3.11/site-packages/django/db/backends/sqlite3/base.py" , line 329, in execute return super().execute(queryparams)
django.db.utils.OperationalError: near ")": syntax error
You can confirm using a tool like ruff or copy pasting online in a syntax checker to ensure that there are actually no syntax error. This is troubling.
Apparently, the error is caused by a bad model which got integrated in one of the migrations.
The solution
To solve a syntax error on using the migrate comamnds,
- delete all files in all migrations folder except
__init__.py
- delete the sqlite database if need be
Bit hard, but it solves the issue.