繁体   English   中英

PostgreSQL psycopg2 错误:没有唯一约束/InvalidForeignKey

[英]PostgreSQL psycopg2 error: there is no unique constraint / InvalidForeignKey

我有以下型号:

class Contact(models.Model):
    email = models.EmailField()

class EventList(models.Model):
    event_contacts = models.ManyToManyField(Contact, through=EventMembership)

class EventMembership(models.Model):
    event_list = models.ForeignKey(EventList, null=True, on_delete=models.PROTECT)
    event_contact = models.ForeignKey(Contact, null=True, blank=False, on_delete=models.PROTECT)

但是,在完全干净的数据库上为EventMembership应用迁移时, EventMembership以下错误:

psycopg2.errors.InvalidForeignKey:没有唯一约束匹配给定键的引用表“contacts_contact”

class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('lists', '0001_initial'),
        ('contacts', '0002_auto_20200308_2253'),
    ]

    operations = [
       migrations.CreateModel(
            name='EventMembership',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('event_contact', apps.utils.django_multitenant.fields.TenantForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='contacts.Contact')),
                ('event_list', apps.utils.django_multitenant.fields.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='lists.EventList'))
                  ]
                ]

contacts_contact显然在id有一个唯一的约束作为主键。

什么可能导致此错误? / 我该如何调试?

你只需要一步一步来。 现在,您正尝试与尚未在数据库中的表创建外键关系。 因此,将除 Contact 模型之外的所有内容注释掉,应用迁移,然后添加 EventList 等。如果您依赖于 Contact 模型首先运行的事实,那么在这种情况下它没有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM