Reputation: 111
How do i fix Django Database error. I'm using MongoDB with Djongo.
Everything was working fine until recently when i decided to add NewApp. Whenever i try to migrate it greets me with django.db.utils.DatabaseError .
I tried reseting the DataBase Manually as well as from Terminal but had no luck.
I think it's super simple but imm new to Django and MongoDB can't seem to figure out how to fix it, any help will be greatly appreciated.
Here's what the error looks like.
Not implemented alter command for SQL ALTER TABLE "articles_article" ADD COLUMN "author_id" int NOT NULL
Applying articles.0002_article_author...Traceback (most recent call last):
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/djongo/cursor.py", line 51, in execute
self.result = Query(
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/djongo/sql2mongo/query.py", line 783, in __init__
self._query = self.parse()
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/djongo/sql2mongo/query.py", line 875, in parse
raise e
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/djongo/sql2mongo/query.py", line 856, in parse
return handler(self, statement)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/djongo/sql2mongo/query.py", line 888, in _alter
query = AlterQuery(self.db, self.connection_properties, sm, self._params)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/djongo/sql2mongo/query.py", line 425, in __init__
super().__init__(*args)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/djongo/sql2mongo/query.py", line 84, in __init__
super().__init__(*args)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/djongo/sql2mongo/query.py", line 62, in __init__
self.parse()
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/djongo/sql2mongo/query.py", line 435, in parse
self._add(statement)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/djongo/sql2mongo/query.py", line 598, in _add
raise SQLDecodeError(err_key=tok.value,
djongo.exceptions.SQLDecodeError:
Keyword: int
Sub SQL: ALTER TABLE "articles_article" ADD COLUMN "author_id" int NOT NULL
FAILED SQL: ('ALTER TABLE "articles_article" ADD COLUMN "author_id" int NOT NULL',)
Params: ([],)
Version: 1.3.3
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute
return self.cursor.execute(sql, params)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/djongo/cursor.py", line 59, in execute
raise db_exe from e
djongo.database.DatabaseError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 21, in <module>
main()
File "manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/core/management/base.py", line 328, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/core/management/base.py", line 369, in execute
output = self.handle(*args, **options)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/core/management/base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/core/management/commands/migrate.py", line 231, in handle
post_migrate_state = executor.migrate(
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/migrations/executor.py", line 117, in migrate
state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/migrations/executor.py", line 147, in _migrate_all_forwards
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/migrations/executor.py", line 245, in apply_migration
state = migration.apply(state, schema_editor)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/migrations/migration.py", line 124, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/migrations/operations/fields.py", line 110, in database_forwards
schema_editor.add_field(
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/backends/base/schema.py", line 480, in add_field
self.execute(sql, params)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/backends/base/schema.py", line 142, in execute
cursor.execute(sql, params)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/backends/utils.py", line 100, in execute
return super().execute(sql, params)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/backends/utils.py", line 68, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute
return self.cursor.execute(sql, params)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute
return self.cursor.execute(sql, params)
File "/Users/username/opt/anaconda3/envs/restApi/lib/python3.8/site-packages/djongo/cursor.py", line 59, in execute
raise db_exe from e
django.db.utils.DatabaseError
Thank you for your time.
Upvotes: 2
Views: 12201
Reputation: 86
I also faced this same error and if none of the other mentioned methods work, then it might be that you have the wrong version of sqlparse
. Mine was 0.4.1
and that does not work for some regions. You must have version 0.2.4
.
To install use the pip command:
pip install sqlparse==0.2.4
Upvotes: 2
Reputation: 1
I deleted all migrations (with migrations folder) and it is solved
Upvotes: 0
Reputation: 1
pip install --install-option="--extras-require=json" git+https://github.com/nesdis/djongo.git@master
Upvotes: 0
Reputation: 39
pip install sqlparse ==0.2.4
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
Upvotes: 3
Reputation: 31
Hi this happens frequently. Here's what to do in three simple steps
Go to the migrations directory of your app
delete 0001_initial.py or allnumbers_initial.py
Run makemigrations and migrate again. your problem will definitely be solved.
Upvotes: 3
Reputation: 193
It happened to me too. I solved it by upgrading Django from 2.1.7 to 3.1.7, deleting the migration file and running makemigrations again. Then, when I migrated, there was no more error. Apparently the migration file generated by Django 2.1.7 is different from 3.1.7.
EDIT: If you get the same error when querying using "filter", try downgrading your Django version to 3.0.5.
Upvotes: 1