当前位置: 首页 > 知识库问答 >
问题:

DROP CONSTRAINT无法找到约束

苏凯
2023-03-14

我试图放弃一个约束:

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

我做错了什么?

共有3个答案

岳晟
2023-03-14

该问题记录在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`;
东方英豪
2023-03-14

我认为你混淆了“模式”(又名“数据库”)和“表”):altertablemytable

白芷阳
2023-03-14

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

ALTER TABLE `mytable` DROP FOREIGN KEY `myconstraint`;
 类似资料:
  • 我正在尝试使用ISOWeek,但在任何地方都找不到它。我尝试了几种不同的使用方法: 我已经尝试添加每一个系统。我可以找到运行时引用,但它总是给出这些错误: 错误CS0234:命名空间“系统”中不存在类型或命名空间名称“ISOWeek”。全球化“(是否缺少程序集引用?) 错误CS0103:名称“ISOWeek”在当前上下文中不存在 错误CS0246:找不到类型或命名空间名称'ISOYork'(您是否

  • 问题内容: 我试图从命令promopt运行一个示例Java应用程序,但出现以下错误: 我用来尝试运行此应用的命令是: 所有相关文件都位于当前工作目录中(.java,.class和.jar文件) 我用来构建.class文件的命令如下(有2个.java文件): 再次从同一工作目录运行-的内容(或多或少): 我试图以C#开发人员的身份学习Java,所以我在编程概念方面拥有深厚的背景,整个Java工具链目

  • 问题内容: Selenium无法通过ID和定位iframe Name。 这是用于Shopify上的自动结帐测试。具体问题在付款字段内。我找到的ID和名称iframe,即。 Code trials: The error is: 问题答案: 我相信可以为此使用XPath。您将需要使用XPath查找IFrame IWebElement,然后将IWebElement传递到SwitchTo()。Frame(

  • 问题内容: 我正在用Java构建一个项目。 我有这个错误: 我已经安装了JDK和文件夹:在我的系统中,但是文件不存在。 问题答案: 是的,您已经下载并安装了Java Runtime Environment(JRE)而不是Java Development Kit(JDK)。后者具有tools.jar,java.exe,javac.exe等。

  • 过了很长时间,我正在安装一台新机器。 我使用家庭酿造安装了java: 在我的。我添加的zshrc文件: 运行'java-version'会得到以下输出: openjdk 版本 “18.0.1.1” 2022-04-22 OpenJDK 运行时环境 自制 (生成 18.0.1.1 0) OpenJDK 64 位服务器虚拟机 自制 (构建 18.0.1.1 0, 混合模式, 共享) 当我尝试运行net

  • 我下载了最新版本的spring工具套件(STS 3.6.2),当我尝试导入spring入门内容时,返回如下错误: 入门指南SunCertPathBuilderException:找不到请求目标的有效证书路径 我已经设置了访问internet的代理,但我不知道如何在STS中导入证书。请帮忙。谢谢 詹姆斯