show create table USERS; 我会得到那个结果。
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并运行 ALTER TABLE USERS DROP FOREIGN KEY SYS_C0018880; ERROR 1025(HY000):将'./dbname/USERS'重命名为'./dbname/#sql2-3ea-2c'时出错(错误号:152)
我也用过
ALTER TABLE USERS DROP FOREIGN KEY CREATED_BY;
但我又得到了同样的错误
将'./dbname/USERS'重命名为'./dbname/#sql2-3ea-2c'时出错(错误号:152)
请任何一个分享如何删除此外键,如果可能请分享KEY SYS_C0018880
(CREATED_BY
)。我知道这个密钥是外键,因为在desc table_name上我得到了这个结果;
| DN_ID | bigint(20)|没有| MUL | NULL | | 的 | CREATED_BY | varchar(45)|没有| MUL | NULL | | | LAST_UPDATED_BY | varchar(45)|没有| MUL | NULL | | | LAST_UPDATED_DT | datetime |没有| MUL | NULL |
答案 0 :(得分:2)
默认情况下,如果您不指定外键名称,MariaDB 会将_ibfk 附加到外键名称。因此,请使用以下代码格式删除您未指定外键名称的外键:
ALTER TABLE table_name DROP FOREIGN KEY foreign_key_ibfk;
答案 1 :(得分:1)
使用密钥名称而不是外键
ALTER TABLE USERS DROP KEY SYS_C0018880
答案 2 :(得分:1)
根本原因是数据目录中的文件#sql2-3ea-2c *和/或内部InnoDB字典中具有此类名称的表。这将阻止USERS表上的任何ALTER操作。搜索谷歌“删除孤立的innodb表”以获取指令reg。该