使用web2py将空值添加到外键时的IntegrityError

时间:2011-07-09 14:40:18

标签: python mysql web2py

我在尝试将记录插入名为 Foods 的表中时,从web2py收到IntegrityError。该表有 Recipes 的外键,但我想添加一行没有recipe_id。

<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的新手:(

1 个答案:

答案 0 :(得分:0)

确保您的食物和食谱具有相同的引擎。如果你有不同的引擎,那么就会出现这个问题。

例如:食物(MyISAM)和食谱(InnoDB)会出错。