使用web2py向外键添加空值时出现IntegrityError
我在使用web2py往一个叫Foods的表里插入记录时,遇到了一个完整性错误(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
确保你的食品和食谱使用的是相同的数据库引擎。如果你使用了不同的引擎,就会出现这个问题。
比如说,如果食品用的是MyISAM引擎,而食谱用的是InnoDB引擎,就会出错。