小编Nin*_*inj的帖子

MariaDB:禁用外键检查

在 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, CONSTRAINT FK_F62F176F92F3E70FOREIGN KEY ( country_id) REFERENCES country( id))

使用TRUNCATE具有相同的效果。

如果您对我可能错过的内容有任何想法,请提前致谢。因为文档和现有问题在这里没有多大帮助。

mariadb foreign-key

10
推荐指数
1
解决办法
2万
查看次数

标签 统计

foreign-key ×1

mariadb ×1