在 MySql 上,为了在由于外键(仅限 InnoDB)而通常不可能的情况下截断表或删除行,我们使用以下命令:
SET FOREIGN_KEY_CHECKS=0;
在 MariaDB 上,虽然此命令被接受,但它什么也不做。
该文件说我必须改为运行以下命令:
在每张表的基础上:
ALTER TABLE `...` DISABLE KEYS;
Run Code Online (Sandbox Code Playgroud)
或者,在全球范围内:
SET @@session.unique_checks = 0;
SET @@session.foreign_key_checks = 0;
Run Code Online (Sandbox Code Playgroud)
所以我尝试运行这个脚本:
SET FOREIGN_KEY_CHECKS=0;
SET @@session.unique_checks = 0;
SET @@session.foreign_key_checks = 0;
ALTER TABLE `country` DISABLE KEYS;
DELETE FROM `country` WHERE 1;
Run Code Online (Sandbox Code Playgroud)
这导致我:
无法删除或更新父行:外键约束失败 (
database.region, CONSTRAINTFK_F62F176F92F3E70FOREIGN KEY (country_id) REFERENCEScountry(id))
使用TRUNCATE具有相同的效果。
如果您对我可能错过的内容有任何想法,请提前致谢。因为文档和现有问题在这里没有多大帮助。