DELETE POST导致“无法删除或更新父行:外键约束失败”

时间:2018-06-30 作者:Carol.Kar

我正在使用wordpress 4.9.6 具有mysqlnd 5.0.12-dev 作为db。我已经创建了自己的表,它使用post\\u id作为外键约束。

当我想删除后端中的帖子时,我会得到:

WordPress database error: [Cannot delete or update a parent row: a foreign key constraint fails (`my_own_database`.`wp_product`, CONSTRAINT `wp_product_ibfk_1` FOREIGN KEY (`post_id`) REFERENCES `wp_posts` (`ID`))]
DELETE FROM `wp_posts` WHERE `ID` = 300

Error in deleting.
我引用post\\u id的表如下所示:

CREATE TABLE wp_product(
    id BIGINT(20) NOT NULL AUTO_INCREMENT,
    post_id BIGINT(20) UNSIGNED,
    product_id BIGINT(20) NOT NULL,
    daily_netProfit DECIMAL(30,15) NOT NULL,
    daily_grossProfit DECIMAL(30,15) NOT NULL,
    daily_costs DECIMAL(30,15) NOT NULL,
    created_at DATETIME NULL,
    updated_at DATETIME NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (post_id) REFERENCES wp_posts(ID),
    FOREIGN KEY (product_id) REFERENCES {$wpdb->prefix}products(id)
);
在我的后端按delete按钮时,有没有建议如何删除帖子?

感谢您的回复!

1 个回复
最合适的回答,由SO网友:Steve 整理而成

MySQL表结构在wp\\U产品表和wp\\U帖子之间创建引用和约束关系。MySQL正按照您的指示进行操作。在这种情况下,阻止您删除wp\\U帖子中与wp\\U产品表中的记录“相关”的记录。

简而言之,这就是外键应该做的;维护数据完整性。因此,当wp\\U产品中存在相应/相关记录时,您无法删除wp\\U帖子中的行。

我建议看一下MySQL文档Using FOREIGN KEY Constraints. 根据您下面的评论,我建议查看“引用操作”,将操作设置为级联。

查看链接的文档,以深入了解符合您需求的细节。

结束