2

I keep running into the django.db.utils.DatabaseError error with trying to migrate the database changes in a Django project.

Terminal Output:

Running migrations:
Not implemented alter command for SQL ALTER TABLE "project_name_user" ALTER COLUMN "age" TYPE double
  Applying project_name.0002_auto_20210415_1452...Traceback (most recent call last):
  File "...\.venv\lib\site-packages\djongo\cursor.py", line 51, in execute
    self.result = Query(
  File "...\.venv\lib\site-packages\djongo\sql2mongo\query.py", line 783, in __init__
    self._query = self.parse()
  File "...\.venv\lib\site-packages\djongo\sql2mongo\query.py", line 875, in parse
    raise e
  File "...\.venv\lib\site-packages\djongo\sql2mongo\query.py", line 856, in parse
    return handler(self, statement)
  File "...\.venv\lib\site-packages\djongo\sql2mongo\query.py", line 888, in _alter
    query = AlterQuery(self.db, self.connection_properties, sm, self._params)
  File "...\.venv\lib\site-packages\djongo\sql2mongo\query.py", line 425, in __init__
    super().__init__(*args)
  File "...\.venv\lib\site-packages\djongo\sql2mongo\query.py", line 84, in __init__
    super().__init__(*args)
  File "...\.venv\lib\site-packages\djongo\sql2mongo\query.py", line 62, in __init__
    self.parse()
  File "...\.venv\lib\site-packages\djongo\sql2mongo\query.py", line 441, in parse
    self._alter(statement)
  File "...\.venv\lib\site-packages\djongo\sql2mongo\query.py", line 500, in _alter
    raise SQLDecodeError(f'Unknown token: {tok}')
djongo.exceptions.SQLDecodeError:

        Keyword: Unknown token: TYPE
        Sub SQL: None
        FAILED SQL: ('ALTER TABLE "project_name_user" ALTER COLUMN "age" TYPE double',)
        Params: ([],)
        Version: 1.3.4

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "...\.venv\lib\site-packages\django\db\backends\utils.py", line 86, in _execute
    return self.cursor.execute(sql, params)
  File "...\.venv\lib\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 22, in <module>
    main()
  File "...\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "...\.venv\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "...\.venv\lib\site-packages\django\core\management\__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "...\.venv\lib\site-packages\django\core\management\base.py", line 328, in run_from_argv
    self.execute(*args, **cmd_options)
  File "...\.venv\lib\site-packages\django\core\management\base.py", line 369, in execute
    output = self.handle(*args, **options)
  File "...\.venv\lib\site-packages\django\core\management\base.py", line 83, in wrapped
    res = handle_func(*args, **kwargs)
  File "...\.venv\lib\site-packages\django\core\management\commands\migrate.py", line 231, in handle
    post_migrate_state = executor.migrate(
  File "...\.venv\lib\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 "...\.venv\lib\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 "...\.venv\lib\site-packages\django\db\migrations\executor.py", line 245, in apply_migration
    state = migration.apply(state, schema_editor)
  File "...\.venv\lib\site-packages\django\db\migrations\migration.py", line 124, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "...\.venv\lib\site-packages\django\db\migrations\operations\fields.py", line 249, in database_forwards
    schema_editor.alter_field(from_model, from_field, to_field)
  File "...\.venv\lib\site-packages\django\db\backends\base\schema.py", line 564, in alter_field
    self._alter_field(model, old_field, new_field, old_type, new_type,
  File "...\.venv\lib\site-packages\django\db\backends\base\schema.py", line 710, in _alter_field
    self.execute(
  File "...\.venv\lib\site-packages\django\db\backends\base\schema.py", line 142, in execute
    cursor.execute(sql, params)
  File "...\.venv\lib\site-packages\django\db\backends\utils.py", line 100, in execute
    return super().execute(sql, params)
  File "...\.venv\lib\site-packages\django\db\backends\utils.py", line 68, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "...\.venv\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "...\.venv\lib\site-packages\django\db\backends\utils.py", line 86, in _execute
    return self.cursor.execute(sql, params)
  File "...\.venv\lib\site-packages\django\db\utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "...\.venv\lib\site-packages\django\db\backends\utils.py", line 86, in _execute
    return self.cursor.execute(sql, params)
  File "...\.venv\lib\site-packages\djongo\cursor.py", line 59, in execute
    raise db_exe from e
django.db.utils.DatabaseError

I am stumped on how to solve this issue. I have tried sqlparse==0.2.4 as suggested here but it did not work for me.

Deleted everything in the migrations folder and started from scratch. The same error pops up but now it is even longer.

I understand there is a not implemented error but not sure how to fix it.

The models.py:

from djongo import models

class User(models.Model):
    age = models.FloatField()
    height = models.FloatField()
    waist = models.FloatField()
    weight = models.FloatField()

Rashiq
  • 317
  • 1
  • 4
  • 13
  • Share relevant model info – iklinac Apr 15 '21 at 23:07
  • This is a closed [issue](https://github.com/nesdis/djongo/issues/433) with djongo. (Although they should really solve it, anyway the discussion there describe a workaround) – Abdul Aziz Barkat Apr 16 '21 at 05:20
  • I'm facing the same problem when saving data to MongoDB database. – ASIF Jun 02 '21 at 10:42
  • 1
    @ASIF I wasn't able to solve the problem nor was it addressed by the Djongo developers. The workaround did not work for me. I switched to CockroachDB if it helps your situation. – Rashiq Jun 02 '21 at 18:24
  • Reason: Djongo (NOT Django) doesn't support Alter Table command until now. The solution that worked for me 1) Delete everything inside ***Your_App_Name->Migrations*** folder except **__init__.py** file. 2) Run the migrations command again: python manage.py makemigrations python manage.py migrate – ASIF Jun 04 '21 at 09:31
  • 1
    @ASIF I am glad it did for you but as I've already stated in the question, doing so did not work for me and just made my terminal error output even longer. – Rashiq Jun 04 '21 at 11:19
  • @Rashiq have you deleted the ***__schema__***, ***django_migrations***, and ***django_content_type*** tables from the database before creating the new migrations? If you've not deleted the above tables then it will possibly conflict with the new migrations created by Djongo. If your application has a lot of models other than the **User model** then you can try deleting only the ***User*** model record from the above three tables. – ASIF Jun 04 '21 at 16:03

0 Answers0