当试图将记录插入名为Foods的表时,我收到了web2py的IntegrityError。该表有一个菜谱外键,但我想添加一个没有菜谱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表,而无需指定菜谱id。
我是不是丢了什么东西?我是MySQL和web2py的新手:(
最佳答案
确保你的食物和食谱有相同的引擎。如果您有不同的发动机,则会发生此问题。
例如:食物(MyISAM)和食谱(InnoDB)会出错。