我试图放弃一个约束:
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 |
+--------------------+-------------------+---------------------------------------------------------------+--------------+-----------------+-----------------+
我究竟做错了什么?
我认为你混淆“架构”(又名“数据库”)和“表格”:ALTER TABLE mytable ...
问题是MariaDB(MySql?)不允许使用语法DROP CONSTRAINT
删除外键约束。它必须像这样删除:
ALTER TABLE `mytable` DROP FOREIGN KEY `myconstraint`;