2011-07-09 57 views
3

嘗試將記錄插入名爲Foods的表中時,我收到來自web2py的IntegrityError。該表有一個外鍵食譜,但我想添加一行沒有recipe_id。使用web2py向外鍵添加空值時出現IntegrityError

<class 'gluon.contrib.pymysql.err.IntegrityError'>((1452, u'Cannot add or update a child row: a foreign key constraint fails (`pymeals`.`foods`, CONSTRAINT `foods_ibfk_1` FOREIGN KEY (`recipe_id`) REFERENCES `recipes` (`id`) ON DELETE CASCADE)')) 

這是我的表

+-----------+--------------+------+-----+---------+----------------+ 
| Field  | Type   | Null | Key | Default | Extra   | 
+-----------+--------------+------+-----+---------+----------------+ 
| id  | int(11)  | NO | PRI | NULL | auto_increment | 
| name  | varchar(255) | YES |  | NULL |    | 
| recipe_id | int(11)  | YES | MUL | NULL |    | 
+-----------+--------------+------+-----+---------+----------------+ 

我曾嘗試使用下面的代碼中定義的web2py表:

db.define_table('foods', 
       Field('name'), 
       Field('recipe_id', db.recipes, required=False, notnull=False, requires=None)) 

,我相信我有謊言與web2py會盡我所能的問題直接從mysql命令行提示符插入到Foods表中,而不指定recipe_id。

我在這裏錯過了什麼嗎?我是新來的MySQL和web2py的:(

+0

你是如何做插入? – Anthony

回答

0

確保你的食物和食譜具有相同的引擎如果你有不同的引擎,那麼這個問題就發生

例如:。食品(MyISAM數據)和食譜( InnoDB)會報錯。