IntegrityError при добавлении нулевого значения во внешний ключ с помощью web2py - PullRequest
3 голосов
/ 09 июля 2011

Я получаю IntegrityError от web2py при попытке вставить запись в таблицу с именем Foods .Таблица имеет внешний ключ для Рецепты , но я хотел бы добавить строку без 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    |                |
+-----------+--------------+------+-----+---------+----------------+

Iопределили таблицу в web2py, используя следующий код:

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

Я считаю, что проблема, с которой я сталкиваюсь, связана с web2py, поскольку я могу вставить ее в таблицу Foods непосредственно из командной строки mysqlподсказка без указания recipe_id.

Я что-то здесь упускаю?Я новичок в MySQL и web2py: (

1 Ответ

0 голосов
/ 26 июня 2012

Убедитесь, что ваши продукты и рецепты имеют одинаковые двигатели.Если у вас разные движки, то эта проблема возникнет.

Например: Foods (MyISAM) и рецепты (InnoDB) выдадут ошибку.

...