我正在試圖更改表上的主鍵MySQL管理員摔跤。它不會讓我所以我刪除foureign鍵和重命名錶,很好沒有問題。MySQL錯誤編號150創建不存在的外鍵失敗
我現在已經刪除了原始表t_order_items,但我無法將t_order_items2重命名爲t_order_items,它會因150錯誤而失敗。
因此,我想我會創建創建聲明,並擺脫管理員,以防萬一它是問題。下面創建stament失敗,但只有在表被稱爲t_order_items別的名稱,它succededs:
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的輸出;
我得到以下FOREIGN KEY ERROR報告,它是插入的正確時間,但引用已刪除的舊(原始)表的外鍵,並且不存在於此創建腳本中。
錯誤表web2print/t_order_items的外鍵約束: 沒有在表中沒有索引,其中將包括 在 表中的列作爲第一列,或數據類型不被引用的匹配者表 或其中一個ON ... SET NULL列被聲明爲NOT NULL。約束: , 約束 「FK_t_order_items_1」 外鍵( 「單編號」)參考 「t_orders」( 「單編號」)ON DELETE CASCADE ON UPDATE CASCADE
有在表上沒有外鍵?他們被刪除。
以下工作
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;
可是我爲什麼這樣做呢?
感謝您的任何反饋