2012-10-09 123 views
2

我想鏈接提供程序上的ForeignKey和bestbuy_type上的M2Mfield - 但每次我嘗試將任何內容保存到這些字段中我得到的錯誤:django.db.utils.IntegrityError:1452'無法添加或更新子行:外鍵約束失敗

(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`))') 

的領域在我的模型被指定爲:

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 

使用但這實際上填充在Django管理爲字段中輸入正確的值但錯誤的是在保存上產生。

使用MySQL和發動機指定的是:

'ENGINE': 'django.db.backends.mysql' 

沒有人有任何想法,爲什麼這會發生?

+0

你使用遷移或同步?你同步後是否更改過模型? –

+0

這是與南,剛發現答案,以便張貼在下面的秒 –

回答

7

原來,創建的新表使用的是InnoDB而不是MyISAM,如現有的表。

添加此行到我的數據庫配置解決了這個對我來說迫使由南創建使用MyISAM新表:

'OPTIONS' : { 'init_command' : 'SET storage_engine=MyISAM', }, 
相關問題