You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django迁移报错:django.db.utils.IntegrityError(1215,无法添加外键约束)

解决Django迁移时MySQL外键约束错误(1215)

遇到django.db.utils.IntegrityError: (1215, 'Cannot add foreign key constraint')错误,结合你提供的代码,核心原因和解决方法如下:

核心问题:AuthUser模型缺失显式主键定义

你通过inspectdb生成的AuthUser模型没有显式声明主键字段,但Django默认的auth_user表主键是id(自增整数)。当managed=False时,Django不会自动推断表的主键,导致外键关联时无法找到正确的关联字段。

解决步骤1:修正AuthUser模型

在AuthUser类中添加主键字段,匹配原auth_user表的结构:

class AuthUser(models.Model):
    id = models.AutoField(primary_key=True)  # 新增:显式定义主键
    password = models.CharField(max_length=128)
    last_login = models.DateTimeField(blank=True, null=True)
    is_superuser = models.IntegerField()
    username = models.CharField(unique=True, max_length=150)
    first_name = models.CharField(max_length=150)
    last_name = models.CharField(max_length=150)
    email = models.CharField(max_length=254)
    is_staff = models.IntegerField()
    is_active = models.IntegerField()
    date_joined = models.DateTimeField()

    class Meta:
        managed = False
        db_table = 'auth_user'

其他可能的排查点

如果修正主键后仍然报错,检查以下内容:

1. 数据库引擎一致性

MySQL的MyISAM引擎不支持外键约束,必须确保auth_user和user_details表都使用InnoDB引擎:

  • 查看表引擎:SHOW CREATE TABLE auth_user;
  • 修改引擎(如果需要):ALTER TABLE auth_user ENGINE=InnoDB;

Django默认会使用InnoDB,可在settings.py中添加配置确保:

DATABASES = {
    'default': {
        # 其他配置...
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES', innodb_strict_mode=1",
        },
    }
}

2. 字符集与排序规则一致

两个表的字符集和排序规则必须完全匹配,否则MySQL会拒绝创建外键:

  • 查看表字符集:SHOW FULL COLUMNS FROM auth_user;
  • 统一字符集(推荐使用utf8mb4):
ALTER TABLE auth_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE user_details CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3. 字段类型匹配

确保外键关联的字段类型完全一致:AuthUser的主键是AutoField(对应MySQL的int(11)),UserDetails的user_id字段会自动匹配类型,无需额外修改,但如果原表字段类型有差异,需要同步调整模型定义。

验证修复

修改后重新运行迁移命令:

python manage.py makemigrations
python manage.py migrate

内容的提问来源于stack exchange,提问作者marivic valdehueza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:03:29