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 Album
Error 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 添加唯一约束时出现重复条目错误