【问题标题】:django.db.migrations.exceptions.InconsistentMigrationHistory: Migration is applied before its dependency accounts.0001_initial on database 'default'django.db.migrations.exceptions.InconsistentMigrationHistory:迁移在其依赖accounts.0001_initial之前应用在数据库'default'上
【发布时间】:2021-04-21 01:46:55
【问题描述】:

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

django.db.migrations.exceptions.InconsistentMigrationHistory:迁移 admin.0001_initial 在其依赖项 accounts.0001_initial 之前应用于数据库“默认”。

追溯:

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'.

models.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)

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

【问题讨论】:

    标签: python django django-models deployment django-rest-framework


    【解决方案1】:

    如果您使用的是 git 等版本控制工具,只需还原迁移中的更改。但如果没有,您可以按照here 的说明清除迁移历史记录。

    它建议使用python manage.py dbshell 连接到数据库,然后使用select * from django_migrations where app='admin'; 查看迁移历史记录。 然后找到 0001 迁移的 id 并像这样删除:delete from django_migrations where id=&lt;some_id&gt;; 其中some_id 是迁移 id。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2021-04-10
        • 2021-08-11
        • 2021-08-24
        • 2016-12-24
        • 2020-05-10
        • 2018-10-06
        • 2018-12-07
        • 2020-06-22
        • 1970-01-01
        相关资源
        最近更新 更多