Django 2.0执行makemigrations报错:Application labels不唯一,重复项auth
解决Django 2.0中"Application labels aren't unique, duplicates: auth"错误
嘿,这个问题我之前帮不少开发者排查过,出现这个报错的核心原因是你的项目里有两个应用的label都是auth,Django 2.0开始对应用label的唯一性要求很严格,所以直接抛出了这个错误。下面是具体的解决步骤:
1. 检查INSTALLED_APPS是否重复注册了auth
打开项目根目录下的settings.py,找到INSTALLED_APPS配置列表,仔细查看是否重复添加了django.contrib.auth。比如可能不小心写成了这样:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', # ... 其他应用 'django.contrib.auth', # 这里重复了! ]
如果发现重复,删掉其中一个即可。
2. 排查自定义应用的AppConfig是否冲突
如果你开发了自己的自定义应用,一定要检查应用目录下的apps.py文件,确认有没有把应用的name或label设为auth。比如错误的写法:
from django.apps import AppConfig class CustomAuthConfig(AppConfig): name = 'auth' # 这里和内置的auth应用重名了 label = 'auth'
把name改成你的应用实际名称(比如my_custom_auth),label也设置成唯一值,比如my_auth,修改后记得在INSTALLED_APPS里用完整的AppConfig路径注册,比如:
INSTALLED_APPS = [ # ... 其他应用 'my_custom_auth.apps.CustomAuthConfig', ]
3. 清理迁移缓存(若上述步骤无效)
如果前两步都没问题但报错依然存在,可以尝试重置迁移状态:
- 删除每个应用的
migrations文件夹中,除了__init__.py之外的所有迁移文件 - 运行命令:
python manage.py migrate --fake,这个命令会让Django认为所有迁移都已执行,不会真正修改数据库 - 最后重新执行:
python manage.py makemigrations
内容的提问来源于stack exchange,提问作者Utkarsh
相关产品推荐
相关产品推荐

