繁体   English   中英

DROP CONSTRAINT 无法找到约束

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM