DROP CONSTRAINT无法找到约束

问题描述 投票:0回答:2

我试图放弃一个约束:

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     |
+--------------------+-------------------+---------------------------------------------------------------+--------------+-----------------+-----------------+

我究竟做错了什么?

mysql sql mariadb
2个回答
1
投票

我认为你混淆“架构”(又名“数据库”)和“表格”:ALTER TABLE mytable ...


0
投票

问题是MariaDB(MySql?)不允许使用语法DROP CONSTRAINT删除外键约束。它必须像这样删除:

ALTER TABLE `mytable` DROP FOREIGN KEY `myconstraint`;
© www.soinside.com 2019 - 2024. All rights reserved.