Django.db.migrations.exceptions.InconsistentMigrationHistory:迁移在其依赖项帐户之前应用。0001_在数据库“default”上初始化

2024-10-04 05:31:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试迁移我的自定义用户模型,并运行makemigrations命令对新模型进行迁移。但当我运行migrate命令时,它会抛出以下错误:

django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency accounts.0001_initial on database 'default'.

回溯:

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 "C:\Users\AHMED\anaconda3\envs\dotesrow\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\AHMED\anaconda3\envs\dotesrow\lib\site-packages\django\core\management\__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\AHMED\anaconda3\envs\dotesrow\lib\site-packages\django\core\management\base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\AHMED\anaconda3\envs\dotesrow\lib\site-packages\django\core\management\base.py", line 371, in execute
    output = self.handle(*args, **options)
  File "C:\Users\AHMED\anaconda3\envs\dotesrow\lib\site-packages\django\core\management\base.py", line 85, in wrapped
    res = handle_func(*args, **kwargs)
  File "C:\Users\AHMED\anaconda3\envs\dotesrow\lib\site-packages\django\core\management\commands\migrate.py", line 95, in handle
    executor.loader.check_consistent_history(connection)
  File "C:\Users\AHMED\anaconda3\envs\dotesrow\lib\site-packages\django\db\migrations\loader.py", line 302, in check_consistent_history
    raise InconsistentMigrationHistory(
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency accounts.0001_initial on database 
'default'.

型号.py

class User(auth.models.AbstractUser):

    current_balance = models.IntegerField(("current balance"),default=0,blank=True)
    age = models.IntegerField(("age"),null=True)
    gender = models.CharField(("gender"), max_length=50,choices=GENDER_CHOICES,null=True)
    nationality = models.CharField(("nationality"), max_length=50,null=True)


    def __str__(self):
        return "@{}".format(self.username)

我刚才在这个问题中提到了用户模型,但如果需要更多的代码,请告诉我,我将用这些信息更新我的问题。多谢各位


Tags: djangoinpycoreexecutelibpackagesline
2条回答

如果您使用的是git之类的版本控制工具,只需恢复迁移中的更改即可。但如果没有,您可以清除迁移历史,如here所述

它建议使用python manage.py dbshell连接到数据库,然后使用select * from django_migrations where app='admin';查看迁移历史。 然后找到0001迁移的id并按如下方式删除:delete from django_migrations where id=<some_id>;,其中some_id是迁移id

删除所有迁移文件夹删除db.sqlite3,然后运行python manage.py makemigrationspython manage.py migrate

相关问题 更多 >