MySQL代码中的错误代码1217 [重复]

Posted

技术标签:

【中文标题】MySQL代码中的错误代码1217 [重复]【英文标题】:Error code 1217 in MySQL code [duplicate] 【发布时间】:2016-08-06 09:05:48 【问题描述】:

我收到错误:Error 1217 在我的mysql 代码中。我的MySQL 代码是

DROP TABLE IF EXISTS Formed;
DROP TABLE IF EXISTS Album;
DROP TABLE IF EXISTS Band;
DROP TABLE IF EXISTS Customers;
DROP TABLE IF EXISTS Track;

CREATE TABLE Formed(
    FormedID int AUTO_INCREMENT, 
    YearFormed int, 
    CountryFormed varchar(50), 
    CityFormed varchar(50), 
    BandMembers varchar(400), 
    PRIMARY KEY(FormedID))
    ENGINE=InnoDB;

CREATE TABLE Track (
    TrackID int AUTO_INCREMENT, 
    AlbumID int AUTO_INCREMENT,
    Songs varchar (100), 
    TrackNumber varchar (20), 
    Title varchar (30), 
    TrackDuration varchar (4), 
    PRIMARY KEY (TrackID)) 
    ENGINE=InnoDB;

CREATE TABLE Album(
    AlbumID int AUTO_INCREMENT,
    TrackID int AUTO_INCREMENT,
    BandID int AUTO_INCREMENT,
    KEY(TrackID),
    KEY(BandID),
    Price varchar(5), 
    PublicationDate varchar(11), 
    Title varchar(30), 
    Genre varchar (36),
    PRIMARY KEY(AlbumID))
    ENGINE=InnoDB;

CREATE TABLE Band(
    BandID int AUTO_INCREMENT, 
    AlbumID int AUTO_INCREMENT, 
    KEY(AlbumID),
    RecordLabel varchar(50), 
    PRIMARY KEY(BandID))
    ENGINE=InnoDB;

CREATE TABLE Customers (
    CustomerID int AUTO_INCREMENT, 
    CName varchar (20), 
    CPhone int (11), 
    CEmail varchar (50), 
    CPPaid varchar (50), 
    CPDate date, 
    PRIMARY KEY (CustomerID))
    ENGINE=InnoDB;

ALTER TABLE Track 
ADD FOREIGN KEY (AlbumID) REFERENCES Album(AlbumID)ON DELETE SET NULL ON UPDATE CASCADE;

ALTER TABLE Album
ADD FOREIGN KEY (TrackID) REFERENCES Track(TrackID)ON DELETE SET NULL ON UPDATE CASCADE;

ALTER TABLE Album
ADD FOREIGN KEY (BandID) REFERENCES Band(BandID)ON DELETE SET NULL ON UPDATE CASCADE;

ALTER TABLE Band
ADD FOREIGN KEY (AlbumID) REFERENCES Album(AlbumID)ON DELETE SET NULL ON UPDATE CASCADE;

我收到了错误DROP TABLE IF EXISTS AlbumError Code: 1217. Cannot delete or update a parent row: a foreign key constraint fails,其他DROP TABLE IF EXISTS 行也会发生这种情况。我不熟悉在MySQL 脚本中使用Foreign Keys,我不知道为什么会出现这些错误。如果有人能帮我解决这个问题,将不胜感激。我已经尝试了所有可以通过以下链接找到的答案Bogus foreign key constraint fail

【问题讨论】:

您可能必须以不同的顺序删除它们以避免违反外键约束,首先删除外键,甚至禁用外键。 @tadman 我刚刚将它们从代码中注释掉,它仍在发生 @Siguza 这不是重复,因为我已经尝试了那里给出的所有答案,但它仍然不起作用 【参考方案1】:

你的脚本没问题,但是在Dropping表之前,尝试删除Foreign Key References

【讨论】:

所以应该是这样的:ALTER TABLE Track ADD FOREIGN KEY (AlbumID);? 你使用的是phpmyadmin还是workbench?还是康索尔!? 我正在使用 MySQL 工作台 在删除查询之前把这个 SET FOREIGN_KEY_CHECKS=0 在创建表查询之前把这个 SET FOREIGN_KEY_CHECKS=1;

以上是关于MySQL代码中的错误代码1217 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

mysql 错误代码1217 MYSQL外键约束检查失败,删除或修改主表记录失败 怎么解决啊

在片段java类中使用“this”和getLastSignedInAccount时出现错误[重复]

尝试向 MySQL 中的 table.column 添加唯一约束时出现重复条目​​错误

mysql 引用键问题,phpmyadmin 错误代码 150 [重复]

以下代码中的错误似乎是啥?

MySQL常见错误代码说明