从数据库中删除表时,外键约束失败

时间:2019-10-08 12:24:33

标签: mysql

我已经使用下面的查询创建了3个表。但是,当我尝试删除LOANACCOUNT表时,会收到错误消息:

错误:

  

错误代码:1217。无法删除或更新父行:外键约束失败

创建表查询:

CREATE TABLE LOANACCOUNT
(
    ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    LOANACCOUNTTYPE VARCHAR(9) NOT NULL,
    CREATIONDATE DATE NOT NULL,
    CONSTRAINT LOAN_ACCOUNT_PK PRIMARY KEY (ID),
);

CREATE TABLE TRANSACTIONS
(
    ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ACCOUNTID INT UNSIGNED NOT NULL,
    TRANSACTIONTYPE VARCHAR(12) NOT NULL,
    CONSTRAINT TRANSACTION_PK PRIMARY KEY (ID),
    FOREIGN KEY LOANACCOUNT_FK (ACCOUNTID) REFERENCES LOANACCOUNT (ID) ON DELETE CASCADE
);

CREATE TABLE INSTALLMENT
(
    ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ACCOUNTID INT UNSIGNED NOT NULL,
    DUEDATE DATE NOT NULL,
    CONSTRAINT INSTALLMENT_PK PRIMARY KEY (ID),
    FOREIGN KEY LOANACCOUNT_FK (ACCOUNTID) REFERENCES LOANACCOUNT (ID) ON DELETE CASCADE
);

删除表格查询:

DROP TABLE IF EXISTS LOANACCOUNT;

我知道我的外键有问题,但是我不知道如何解决。

1 个答案:

答案 0 :(得分:1)

由于@Rigg建议在删除LOANACCOUNT之前需要删除其他表。

(即)除非没有子链接,否则不能删除父表。

暂时可以禁用外键检查,然后删除这些表。

SET SESSION foreign_key_checks = 0;
DROP TABLE IF EXISTS LOANACCOUNT;
SET SESSION foreign_key_checks = 1;