当前位置 博文首页 > initial is applied before its dependency xxx.0001_initial on

    initial is applied before its dependency xxx.0001_initial on

    作者:[db:作者] 时间:2021-06-23 18:16

    问题定位


    在 Django 框架下开发,自定义了一个用户表想取代框架自动生成的用户表,执行到 migrate 命令同步数据库时出现。错误详情如下

    E:\SweetYaya\MyProj01> python manage.py migrate
    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 "D:\Program Files\Python36\lib\site-packages\django\core\management\__init__.py", line 419, in execute_from_command_line
        utility.execute()
      File "D:\Program Files\Python36\lib\site-packages\django\core\management\__init__.py", line 413, in execute
        self.fetch_command(subcommand).run_from_argv(self.argv)
      File "D:\Program Files\Python36\lib\site-packages\django\core\management\base.py", line 354, in run_from_argv
        self.execute(*args, **cmd_options)
      File "D:\Program Files\Python36\lib\site-packages\django\core\management\base.py", line 398, in execute
        output = self.handle(*args, **options)
      File "D:\Program Files\Python36\lib\site-packages\django\core\management\base.py", line 89, in wrapped
        res = handle_func(*args, **kwargs)
      File "D:\Program Files\Python36\lib\site-packages\django\core\management\commands\migrate.py", line 95, in handle
        executor.loader.check_consistent_history(connection)
      File "D:\Program Files\Python36\lib\site-packages\django\db\migrations\loader.py", line 310, in check_consistent_history
        connection.alias,
    django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency MyApp.0001_initial on database 'default'.
    
    

    解决办法


    方法1

    删库,删除数据库中的所有 auth_ 开头和 django_ 开头的表,重新执行即可。太粗暴了,不太好。


    方法2

    • makemigrations
    • 打开 settings.py ,注释掉 INSTALL_APPS 中的
      'django.contrib.admin',
    • 打开 urls.py ,注释掉 urlpatterns 中的 admin
    • migrate 就不报错了
    • 最后注意把注释内容恢复回来就好了