django.db.utils.IntegrityError:1452'无法添加或更新子行:外键约束失败

Jef*_*_Hd 2 mysql django

我正在尝试将提供者上的foreignKey和bestbuy_type上的M2M字段链接起来 - 但是每当我尝试将任何内容保存到这些字段中的任何一个时,我都会收到错误:

(1452, 'Cannot add or update a child row: a foreign key constraint fails (`savingschampion`.`products_masterproduct`, CONSTRAINT `provider_id_refs_id_2ea9c584` FOREIGN KEY (`provider_id`) REFERENCES `products_provider` (`id`))')
Run Code Online (Sandbox Code Playgroud)

这些字段在我的模型中指定为:

class MasterProduct(BaseModel):
    provider = models.ForeignKey('products.Provider', related_name = 'master_products', blank=True, null=True)
    bestbuy_type = models.ManyToManyField('products.BestBuy',blank=True, null=True)
    ...other (no relationship) fields which work fine
Run Code Online (Sandbox Code Playgroud)

使用它确实会在django admin中为字段填充正确的值,但是在保存时会产生错误.

使用MySQL和指定的引擎是:

'ENGINE': 'django.db.backends.mysql'
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会发生这种情况?

Jef*_*_Hd 7

事实证明,正在创建的新表使用InnoDB而不是像现有表一样使用MyISAM.

将此行添加到我的数据库配置通过强制由South创建的新表来使用MyISAM来解决这个问题:

'OPTIONS'  : { 'init_command' : 'SET storage_engine=MyISAM', },
Run Code Online (Sandbox Code Playgroud)