错误1452(23000):无法添加或更新子行

时间:2012-01-13 20:48:03

标签: mysql foreign-keys mysqldump

我有以下数据库,当我尝试运行下面显示的查询时,我收到错误Cannot add or update a child row。我不明白为什么我会收到这个错误。

我输入的object_id(327)存在于数据库中。我已经尝试了其他object_id s,同样的错误出现了。这里发生了什么?

    like_objects
+-------------+---------+------+-----+---------+----------------+
| Field       | Type    | Null | Key | Default | Extra          |
+-------------+---------+------+-----+---------+----------------+
| object_id   | int(11) | NO   | MUL | NULL    |                |
| id          | int(11) | NO   | PRI | NULL    | auto_increment |
| user_id     | int(11) | NO   | MUL | NULL    |                |
+-------------+---------+------+-----+---------+----------------+

objects
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| object_name  | longtext     | NO   |     | NULL    |                |
| object_desc  | longtext     | NO   |     | NULL    |                |
| id           | int(11)      | NO   | PRI | NULL    | auto_increment |
| likes        | int(11)      | NO   |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+

这是查询及其产生的错误:

insert into  like_objects (object_id,user_id) values (327,1)

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails 
(`test_db`.`like_objects`, CONSTRAINT `object_id_refs_id_57f96810` FOREIGN KEY (`object_id`) 
REFERENCES `objects` (`id`))

这很奇怪,因为我对另一个表使用了类似的like逻辑,它工作得非常好。

重要我从objects获得了mysqldump表格。最初,objects表是从PhpMyAdmin创建的,而且like_objects表是由django models

创建的

1 个答案:

答案 0 :(得分:3)

我已经弄明白问题是什么了。正如我在我的问题中所说,objects表是使用phpmyadmin创建的,然后转储到我的数据库中,该数据库是django project的一部分。

因此,最初创建的表的存储引擎为MyISAM,但django创建的表具有存储引擎innodb。因此,每当我尝试在引用like_objects表的objects表中插入对象时,存储类型就会出现这种不兼容性。

这个link帮助我找出了我的表的存储引擎是什么,然后我使用belwo给出的命令将MyISAM引擎更改为innodb,它运行正常。

ALTER TABLE products ENGINE = innodb