无法在 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;
显示创建 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;