【问题标题】:MySql Error 1025MySql 错误 1025
【发布时间】:2016-02-08 10:47:11
【问题描述】:

我正在尝试在名为 ProductInvoice 的表中删除一个外键列。我要删除的列名为 PersonID,来自表 Person。当我运行查询时

ALTER TABLE ProductInvoice
DROP COLUMN PersonID;

我收到此错误...

Error Code: 1025. Error on rename of './jkripal/#sql-91c_19ff0' to './jkripal/ProductInvoice' (errno: 150)

关于如何解决此问题的任何建议?我环顾了这个网站,找不到任何有用的答案。

这些是 SHOW CREATE TABLE ProductInvoice 的结果

'ProductInvoice', 'CREATE TABLE `ProductInvoice` 
(\n  `ProductInvoiceID` int(11) NOT NULL AUTO_INCREMENT,
\n  `PersonID` int(11) DEFAULT NULL,
\n  `ProductID` int(11) NOT NULL,
\n  `InvoiceID` int(11) NOT NULL,
\n  `TravelDate` varchar(255) DEFAULT NULL,
\n  `TicketNote` varchar(255) DEFAULT NULL,
\n  `Quantity` int(11) DEFAULT NULL,
\n  `InsuranceTicketCode` varchar(255) DEFAULT NULL,
\n  PRIMARY KEY (`ProductInvoiceID`),
\n  KEY `fkPerson` (`PersonID`),
\n  KEY `fk_ProductInvoice_to_Product` (`ProductID`),
\n  KEY `fk_ProductInvoice_to_Invoice` (`InvoiceID`),
\n  CONSTRAINT `ProductInvoice_ibfk_1` FOREIGN KEY (`PersonID`) REFERENCES `Person` (`PersonID`),
\n  CONSTRAINT `ProductInvoice_ibfk_2` FOREIGN KEY (`ProductID`) REFERENCES `Product` (`ProductID`),
\n  CONSTRAINT `ProductInvoice_ibfk_3` FOREIGN KEY (`InvoiceID`) REFERENCES `Invoice` (`InvoiceID`)
\n) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8'

【问题讨论】:

标签: mysql mysql-workbench mysql-error-1025


【解决方案1】:

首先禁用外键

SET foreign_key_checks = 0;

删除 PersonID 上的键

ALTER TABLE ProductInvoice
  DROP INDEX fkPerson;

现在删除外键

ALTER TABLE ProductInvoice DROP FOREIGN KEY ProductInvoice_ibfk_1;

删除列

ALTER TABLE ProductInvoice DROP COLUMN PersonID;

启用外键:

SET foreign_key_checks = 1;

【讨论】:

    【解决方案2】:

    先删除Foreign key

    ALTER TABLE ProductInvoice DROP FOREIGN KEY ....;
    

    然后:

    ALTER TABLE ProductInvoice DROP COLUMN PersonID;
    

    【讨论】:

    • 我也试过了,但是不行。我编辑了原始帖子以包含错误。
    • @RyanDorman 您需要使用 FOREIGN KEYname。不是列名
    • 我写这些表格已经有一段时间了,有什么方法可以轻松找到吗?
    • 我刚刚找到了名称并按照您所说的进行了编辑,但由于某种原因它仍然不会删除该列。我使用收到的更新查询和错误编辑了原始帖子。
    • @RyanDorman 删除外键后删除索引:DROP INDEX fkPerson ON ProductInvoice;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 2013-11-09
    • 2013-08-25
    • 2011-07-17
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    相关资源
    最近更新 更多