【问题标题】:Django FK failure in MySQLMySQL中的Django FK失败
【发布时间】:2012-01-24 01:24:05
【问题描述】:

我有以下两种型号:

class Provider(models.Model):
    provider = models.CharField(max_length=100, unique=True)

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    provider = models.ForeignKey(Provider, db_column='provider')

当我尝试保存新对象时,出现 FK 错误:

>>> from main_app.models import User, UserProfile, Provider
>>> p=Provider.objects.get(id=2)
>>> u=User.objects.get(id=1)
>>> p
<Provider: ACME>
>>> u
<User: david@premieredigital.net>
>>> UserProfile.objects.create(user=u, provider=p)
    raise errorclass, errorvalue
IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails
(`premiere`.`main_app_userprofile`, CONSTRAINT `provider_refs_provider_f2a06b37` 
FOREIGN KEY (`provider`) REFERENCES `main_app_provider` (`provider`))')

我在这里做错了什么?

【问题讨论】:

    标签: mysql django django-models


    【解决方案1】:

    似乎 MySQL 希望您的外键 provider 引用 main_app_provider 表的列 provider。但是,Django 会在外键中存储对主键的引用(id,如果没有另外指定)。尝试设置

    provider = models.CharField(max_length=100, primary_key=True)
    

    并重建您的数据库,或将 MySQL 外键约束更改为使用 id 而不是 provider

    【讨论】:

      猜你喜欢
      • 2022-01-17
      • 2013-08-10
      • 2013-02-26
      • 1970-01-01
      • 2019-11-03
      • 2012-12-27
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      相关资源
      最近更新 更多