我试图在 MySQL 中删除一个表,但它抱怨“无法删除或更新父行:外键约束失败”......
问题
从 MySQL 5.0 开始,您可以检查的一个地方是information_schema.table_constraints
例如,要获取给定表 (mydb.mytable) 的外键关系数,请运行以下命令:
SELECT COUNT(1) FROM information_schema.table_constraints
WHERE table_schema = 'mydb'
AND table_name = 'mytable'
AND constraint_type='FOREIGN KEY';
Run Code Online (Sandbox Code Playgroud)
从 MySQL 5.1 开始,您还可以使用information_schema.referential_constraints。这是表格布局:
mysql> show create table information_schema.referential_constraints\G
*************************** 1. row ***************************
Table: REFERENTIAL_CONSTRAINTS
Create Table: CREATE TEMPORARY TABLE `REFERENTIAL_CONSTRAINTS` (
`CONSTRAINT_CATALOG` varchar(512) DEFAULT NULL,
`CONSTRAINT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`CONSTRAINT_NAME` varchar(64) NOT NULL DEFAULT '',
`UNIQUE_CONSTRAINT_CATALOG` varchar(512) DEFAULT NULL,
`UNIQUE_CONSTRAINT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`UNIQUE_CONSTRAINT_NAME` varchar(64) DEFAULT NULL,
`MATCH_OPTION` varchar(64) NOT NULL DEFAULT '',
`UPDATE_RULE` varchar(64) NOT NULL DEFAULT '',
`DELETE_RULE` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`REFERENCED_TABLE_NAME` varchar(64) NOT NULL DEFAULT ''
) ENGINE=MEMORY DEFAULT CHARSET=utf8
1 row in set (0.01 sec)
Run Code Online (Sandbox Code Playgroud)
只需检查 table_name 和 referenced_table_name 列。