gpt4 book ai didi

MySQL 错误号 150 创建因不存在的外键而失败

转载 作者:行者123 更新时间:2023-11-29 09:22:33 25 4
gpt4 key购买 nike

我正在与 mysql 管理员搏斗,试图更改表上的主键。它不允许我,所以我删除了四个键并重命名了表,很好,没问题。

我现在已经删除了原始表 t_order_items,但无法将 t_order_items2 重命名为 t_order_items,它失败并出现 150 错误。

所以我想我应该编写创建语句并退出管理员,以防万一出现问题。以下创建语句会失败,但前提是该表被称为 t_order_items 任何其他名称并且它会成功:

DROP TABLE IF EXISTS `web2print`.`t_order_items`;
CREATE TABLE `web2print`.`t_order_items` (
`orderID` bigint(20) NOT NULL,
`productID` bigint(20) NOT NULL,
`itemprice` decimal(10,2) NOT NULL,
`itemvat` decimal(2,2) NOT NULL DEFAULT '0.15',
`quantity` int(10) unsigned NOT NULL,
`description` varchar(100) NOT NULL,
`stockCode` varchar(45) DEFAULT NULL,
`proofpath` varchar(300) DEFAULT NULL,
`consignmentID` bigint(20) unsigned NOT NULL,
`name` varchar(45) NOT NULL,
`order_itemID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`order_itemID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

如果我检查 SHOW ENGINE INNODB STATUS 的输出;

我收到以下外键错误报告,该报告是插入的正确时间,但引用了已删除的旧(原始)表中的外键,并且在此创建脚本中不存在。

表 web2print/t_order_items 的外键约束错误:表中没有包含以下内容的索引作为第一列的列,或中的数据类型表与引用表中的不匹配或者 ON ... SET NULL 列之一被声明为 NOT NULL。约束:, 约束“FK_t_order_items_1”外键(“orderID”)在更新级联上删除级联时引用“t_orders”(“orderID”)

表上没有外键?它们已被删除。

以下作品

 SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `web2print`.`t_order_items`;
CREATE TABLE `web2print`.`t_order_items` (
`orderID` bigint(20) NOT NULL,
`productID` bigint(20) NOT NULL,
`itemprice` decimal(10,2) NOT NULL,
`itemvat` decimal(2,2) NOT NULL DEFAULT '0.15',
`quantity` int(10) unsigned NOT NULL,
`description` varchar(100) NOT NULL,
`stockCode` varchar(45) DEFAULT NULL,
`proofpath` varchar(300) DEFAULT NULL,
`consignmentID` bigint(20) unsigned NOT NULL,
`name` varchar(45) NOT NULL,
`order_itemID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`order_itemID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1;

但是为什么我必须这样做呢?

感谢您的反馈

最佳答案

您在尝试验证的 t_order_items 和 t_orders 之间存在约束。在删除表之前,您必须首先禁用它们。这很好,因为它可以保护您和您的数据。外键可能已被删除,但约束并未被删除。

关于MySQL 错误号 150 创建因不存在的外键而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1206850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com