Mysql 无法删除或更新父行:外键约束失败错误

Mysql 无法删除或更新父行:外键约束失败错误,mysql,foreign-keys,cascading-deletes,drop-table,Mysql,Foreign Keys,Cascading Deletes,Drop Table,我正在尝试使用以下命令删除表appusers: drop table appusers; 我得到以下错误: Cannot delete or update a parent row: a foreign key constraint fails 这是我桌子的方案 CREATE TABLE appUsers ( uid INT PRIMARY KEY AUTO_INCREMENT, fullName VARCHAR(80) NOT NULL, email VARCHAR(100)

我正在尝试使用以下命令删除表appusers:

drop table appusers;
我得到以下错误:

Cannot delete or update a parent row: a foreign key constraint fails
这是我桌子的方案

CREATE TABLE appUsers (
  uid INT PRIMARY KEY AUTO_INCREMENT,
  fullName VARCHAR(80) NOT NULL,
  email VARCHAR(100) NOT NULL,
  password VARCHAR(100) NOT NULL,
  Gender VARCHAR(7) NOT NULL,  /*["Male", "Female"]*/
  Country VARCHAR(150) NOT NULL,
  Bdate date NOT NULL, 
  Status VARCHAR(25) NOT NULL, /*["Single", "In Relationship", "Merried", "Divorced", "Widow"]*/  /*check married!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
  Religion VARCHAR(25) NOT NULL, /*["Jewish", "Christian", "Muslim", "Atheist", "Other"]*/
  ReligionStrength INT(1) NOT NULL, /*0-5*/
  PoliticalView VARCHAR(25) NOT NULL, /*["Left Wing","Center","Right Wing"]*/
  Occupation VARCHAR(25) NOT NULL, /*["Unemployed","White Collar","Blue Collar","Student", "Independent"]*/
  Volunteering VARCHAR(25) NOT NULL,  /*["Yes", "No"]*/
  Donating VARCHAR(25) NOT NULL,  /*["Yes", "No"]*/
  Economy VARCHAR(25) NOT NULL, /*["Poor","Middle Class","Rich"]*/
  EducationalYears INT(2) NOT NULL
);
我有下表

CREATE TABLE Accelerometer(
  id INT PRIMARY KEY AUTO_INCREMENT,
  uid INT NOT NULL,
  sampleTime timestamp(2) NOT NULL,
  data VARCHAR(100) NOT NULL,
  FOREIGN KEY (uid) REFERENCES appUsers(uid) ON DELETE CASCADE 
);  
据我所知,如果我删除appusers表,那么加速度表也应该被删除,
这里我缺少什么?

关于删除级联的
仅适用于数据,而不适用于元数据

=>

 Alter TABLE Accelerometer drop FOREIGN KEY (uid);
那么只有

drop table appusers;

我意识到这已经过时了一段时间,并且已经选择了一个答案,但是另一种方法是允许外键为
NULL
,然后在DELETE SET NULL
上选择

以下内容可能对您非常有用:

ALTER TABLE 'Accelerometer' 
DROP FOREIGN KEY 'uid_fk';

ALTER TABLE 'Accelerometer'
ADD CONSTRAINT 'uid_fk' FOREIGN KEY ('uid') REFERENCES 'appUsers' ('uid') ON 
UPDATE CASCADE ON DELETE SET NULL;`
就个人而言,我建议在更新级联时使用
,在删除集NULL时使用
,以避免不必要的复杂性,但是您的设置可能要求使用不同的方法


希望这能有所帮助。

如果删除表
appusers
中的一行,则也会删除
accelerator
中的所有相关行。如果删除表,则不会。请先删除此表上的表,然后再删除它。@giorgosbetos,如果要删除整个表,我可以做什么?