无法在 Mariadb 中删除 FOREIGN KEY

Can not drop FOREIGN KEY in Maria DB

显示创建 table 用户; 我会得到那个结果。

    CREATE TABLE `USERS` (
  `UR_ID` bigint(20) NOT NULL,
  `DEPT_ID` bigint(20) DEFAULT NULL,
  `DN_ID` bigint(20) NOT NULL,
  `CREATED_BY` varchar(45) NOT NULL,
  `LAST_UPDATED_BY` varchar(45) NOT NULL,
  `LAST_UPDATED_DT` datetime NOT NULL,
  `UR_LOGIN_NAME` varchar(255) NOT NULL,
  `TRANS_ID` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`UR_ID`),
  UNIQUE KEY `Uk11` (`UR_LOGIN_NAME`),
  KEY `SYS_C0018877` (`UR_ID`),
  KEY `SYS_C0018878` (`DEPT_ID`),
  KEY `SYS_C0018879` (`DN_ID`),
  **KEY `SYS_C0018880` (`CREATED_BY`),**
  KEY `SYS_C0018881` (`LAST_UPDATED_BY`),
  KEY `SYS_C0018882` (`LAST_UPDATED_DT`),
  KEY `SYS_C0018883` (`UR_LOGIN_NAME`),
  CONSTRAINT `fk_USERS_2` FOREIGN KEY (`DN_ID`) REFERENCES `DESIGNATION` (`DN_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

现在我想删除外键 CREATED_BY 并且我 运行 更改 TABLE 用户删除外键 SYS_C0018880; 错误 1025 (HY000):将“./dbname/USERS”重命名为“./dbname/#sql2-3ea-2c”时出错(错误号:152)

我也用过

更改 TABLE 用户删除外键 CREATED_BY;

但是我又遇到了同样的错误

将“./dbname/USERS”重命名为“./dbname/#sql2-3ea-2c”时出错(错误号:152)

请任何人分享我如何删除这个外键,如果可能请分享什么是 KEY SYS_C0018880 (CREATED_BY) 。我知道这个键是外键,因为在 desc table_name 我得到了这个结果;

| DN_ID |大整数(20) |否 |多个 |空 | | | CREATED_BY |变种(45) |否 |多个 |空 | | | LAST_UPDATED_BY |变种(45) |否 |多个 |空 | | | LAST_UPDATED_DT |日期时间 |否 |多个 |空 |

使用键名而不是外键

 ALTER TABLE USERS DROP KEY SYS_C0018880

根本原因是数据目录 and/or table 中的文件 #sql2-3ea-2c* 在内部 InnoDB 字典中具有此类名称。这将阻止对 USERS table 的任何 ALTER 操作。在 google 中搜索 'removing orphaned innodb tables' 以获取说明 reg。那

MariaDB默认在外键名后附加_ibfk,如果你没有指定it.So,请使用以下代码格式删除没有指定外键名的外键:

ALTER TABLE table_name DROP FOREIGN KEY foreign_key_ibfk;