當我們在一個表中添加字段約束的時候:
ALTER TABLE product ADD CONSTRAINT product_fk FOREIGN KEY(category_id) REFERENCES category(id);
會認為我的外鍵約束名稱為product_fk, 然后當我們想刪除時:
ALTER TABLE product DROP FOREIGN KEY product_fk;
會出現以下的錯誤:
<e>Query: alter table product drop foreign key product_fk
Error Code: 1025
Error on rename of '.\web_day09\product' to '.\web_day09\#sql2-2330-1' (errno: 152)
這是因為字段的外鍵約束名並不是product_fk 。我們在數據庫中執行一下命令:
SHOW CREATE TABLE product
控制台會顯示
Table Create Table product
CREATE TABLE `product` (
`pid` varchar(32) NOT NULL,
`pname` varchar(40) DEFAULT NULL,
`price` double DEFAULT NULL,
`category_id` varchar(32) DEFAULT NULL,
PRIMARY KEY (`pid`),
KEY `category_id` (`category_id`),
CONSTRAINT `product_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `category` (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
從建表語句中我們發現外鍵約束名稱是:
product_ibfk_1
然后我們再執行外鍵刪除操作
alter table product drop foreign key product_ibfk_1
0 row(s) affected
原文出處:https://blog.csdn.net/qq_35604488/article/details/90573415