programing

Maria DB에서 외부 키를 삭제할 수 없습니다.

newsource 2022. 9. 18. 12:49

Maria DB에서 외부 키를 삭제할 수 없습니다.

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_를 삭제합니다.ALTER TABLE Users drop foreign key SYS_C0018880; ERROR 1025(HY000):'.dbname/USER'의 이름을 '.dbname/#sql2-3ea-2c'로 변경하는 동안 오류가 발생했습니다(errno: 152).

또, 사용했습니다.

ALTER TABLE 사용자가 작성한 외부 키를 드롭합니다.작성자

하지만 또 같은 오류가 발생했다.

'.dbname/USER'의 이름을 '.dbname/#sql2-3ea-2c'로 변경하는 동안 오류가 발생했습니다(errno: 152).

이 외부키를 어떻게 드롭할 수 있는지, 가능하다면 KEY가 무엇인지 공유해 주세요.SYS_C0018880(CREATED_BY). desc table_name에서 이 결과가 나왔기 때문에 이 키가 외부 키라는 것을 알았습니다.

| DN_ID | bigint (20) | NO | MUL | NULL | | | CREATED _BY | varchar (45) | NO | MUL | NULL || LAST_UPDATED_BY | varchar (45) | NO | MUL | NULL || LAST_UPDATED_DT | datetime | NO | MUL | 특수 |

기본적으로는 MariaDB는 외부 키를 지정하지 않으면 _ibfk를 외부 키의 이름에 추가합니다.따라서 다음 코드 형식을 사용하여 외부 키 이름을 지정하지 않은 외부 키를 삭제하십시오.

ALTER TABLE table_name DROP FOREIGN KEY foreign_key_ibfk; 

근본 원인은 내부 InnoDB 사전의 데이터 디렉토리 및/또는 테이블에 있는 파일 #sql2-3ea-2c*입니다.그러면 USER 테이블에서 ALTER 작업이 방지됩니다.구글에서 '고아가 된 innodb 테이블 제거'를 검색하면 다음과 같은 지시사항을 확인할 수 있습니다.

외부 키가 아닌 키 이름 사용

 ALTER TABLE USERS DROP KEY SYS_C0018880

언급URL : https://stackoverflow.com/questions/36418695/can-not-drop-foreign-key-in-maria-db