[英]DROP CONSTRAINT is not able to find constraint
我尝试删除约束:
USE `mydb`;
BEGIN;
ALTER TABLE `mydb` DROP CONSTRAINT `myconstraint`;
COMMIT;
它回复:
ERROR 1091 (42000) at line 6: Can't DROP CONSTRAINT `myconstraint`; check that it exists
但约束存在:
MariaDB [(mydb)]> select * from information_schema.table_constraints WHERE table_name = 'mytable';
+--------------------+-------------------+---------------------------------------------------------------+--------------+-----------------+-----------------+
| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE |
+--------------------+-------------------+---------------------------------------------------------------+--------------+-----------------+-----------------+
| def | mydb | PRIMARY | mydb | mytable | PRIMARY KEY |
| def | mydb | name | mydb | mytable | UNIQUE |
| def | mydb | myconstraint | mydb | mytable | FOREIGN KEY |
+--------------------+-------------------+---------------------------------------------------------------+--------------+-----------------+-----------------+
我究竟做错了什么?
问题是 MariaDB(MySql?)不允许使用语法DROP CONSTRAINT
删除外键约束。 它必须像这样删除:
ALTER TABLE `mytable` DROP FOREIGN KEY `myconstraint`;
我认为您混淆了“架构”(又名“数据库”)和“表”): ALTER TABLE mytable ...
此问题记录在https://jira.mariadb.org/browse/MDEV-17599 中。 它在 10.2.22 和 10.3.13 (11-02-2019) 版本中得到修复。 我建议更新 MariaDB 版本,或者像@volingas 写的那样,sintax:
ALTER TABLE `mytable` DROP FOREIGN KEY `myconstraint`;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.