【问题标题】:Foreign Key constraint error In DjangoDjango中的外键约束错误
【发布时间】:2017-04-09 15:21:12
【问题描述】:

我正在 Django 中扩展抽象用户模型,它不会让我迁移并抛出与外键相关的错误。

from django.db import models
from django.contrib.auth.models import AbstractUser
import uuid

#Database model for Users.
class User(AbstractUser):
'''
    Abstract user model inherited containing all basic fields such as:
    first and last name, username, email, password etc. Abstract User fields. 
'''
    user_id = models.UUIDField(
        primary_key = True, 
        default = uuid.uuid4, 
        editable = False
        )
    is_owner = models.BooleanField(
    default = False
    )



    class Meta:
        db_table = 'Users'

    def __str__(self):
         self.constructLabel(
            self.first_name, 
            self.last_name,
            self.user_id
        )

错误: django.db.utils.IntegrityError: (1215, '无法添加外键约束')

来自数据库的错误是:

2017-04-09 20:33:07 0x7f3440171700 Error in foreign key constraint of table shipapp/#sql-3c9_33:
 FOREIGN KEY (`user_id`) REFERENCES `users_user` (`user_id`):
Cannot resolve table name close to:
 (`user_id`)

之前遇到过这种情况的任何人都可以帮助我吗?自从 Django 1.8.5 发布以来,我一直失去联系。 :(

【问题讨论】:

  • 这里的shipapp是什么?发布您的完整回溯
  • shipapp 是我的项目名称。
  • 请发布您的完整回溯。一件事,错误与add foreign key有关。在您发布的代码中,没有外键。
  • 我检查了一切。并且发现了问题。我指的是下面的解决方案。

标签: mysql django


【解决方案1】:

我至少解决了我的问题,尽管这不是解决此问题的推荐方法,尽管该解决方案可能特定于我的问题。由于我刚刚开始制作模型,我有能力重新初始化整个项目并复制模型并再次进行迁移。 问题是我认为在创建的初始迁移文件中,在反复删除和重新创建文件后,这些初始文件仍然会出现错误。

从中吸取的教训以及我做错的事情是:

错误:

  1. 我根据我同时制作的 E-R 图制作了多个模型。
  2. 我在制作所有这些时并没有迁移。
  3. 同时建立所有关系。
  4. 尝试立即迁移它们,但出现了竞争条件 种类。在制作模型时尝试了每个关系。我读 某处有人引用“你不能一边吃糕点一边 还是自己留着吧。”

我应该做的:

  1. 一一制作模型。
  2. 迁移了模型,使其保持原子性,即:没有关系 它们之间。仅保留非关系字段。
  3. 迁移模型后,写出模型之间的关系 模型。
  4. 然后根据模型之间的关系迁移模型。

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    相关资源
    最近更新 更多