기본 키가 다른 여러 테이블에서 사용되고 다른 테이블에 대한 외래 키가 여러 개인 테이블이 있습니다.
CREATE TABLE location (
locationID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
...
) ENGINE = InnoDB;
CREATE TABLE assignment (
assignmentID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
locationID INT NOT NULL,
FOREIGN KEY locationIDX (locationID) REFERENCES location (locationID)
...
) ENGINE = InnoDB;
CREATE TABLE assignmentStuff (
...
assignmentID INT NOT NULL,
FOREIGN KEY assignmentIDX (assignmentID) REFERENCES assignment (assignmentID)
) ENGINE = InnoDB;
문제는 외래 키 열 중 하나 (예 : locationIDX)를 삭제하려고 할 때 오류가 발생한다는 것입니다.
“오류 1025 (HY000) : 이름 바꾸기 오류”
이 오류가 발생하지 않고 위의 할당 테이블에서 열을 삭제하려면 어떻게해야합니까?
답변
여기 에 설명 된 것처럼 외래 키 제약 조건은 인덱스 이름이 아닌 제약 조건 이름 으로 삭제해야합니다 . 구문은 다음과 같습니다.
alter table footable drop foreign key fooconstraint
답변
외래 키는 데이터 무결성을 보장하기 위해 존재하므로 외래 키의 일부인 한 열을 삭제할 수 없습니다. 먼저 키를 떨어 뜨려야합니다.
다음 쿼리가 그렇게 할 것이라고 생각합니다.
ALTER TABLE assignmentStuff DROP FOREIGN KEY assignmentIDX;
답변
위에서 언급했듯이 FK를 쉽게 삭제할 수 있습니다. 그러나 방금 KEY 자체를 삭제해야 할 수도 있습니다. 마지막 색인과 같은 다른 색인을 작성하는 오류 메시지가있는 경우 동일한 이름을 사용하면 해당 색인과 관련된 모든 항목을 삭제하는 것이 좋습니다.
ALTER TABLE your_table_with_fk
drop FOREIGN KEY name_of_your_fk_from_show_create_table_command_result,
drop KEY the_same_name_as_above
답변
CONSTRAINT 이름과 FOREIGN KEY 이름이 무엇인지 확인하십시오.
SHOW CREATE TABLE table_name;
CONSTRAINT 이름과 FOREIGN KEY 이름을 모두 제거하십시오.
ALTER TABLE table_name
DROP FOREIGN KEY the_name_after_CONSTRAINT,
DROP KEY the_name_after_FOREIGN_KEY;
도움이 되었기를 바랍니다!
답변
외래 키 제약 조건을 삭제하는 방법이 있습니다. 테이블 변경 location
. location_id
드롭 외래 키 location_ibfk_1
;
답변
이봐, 나는 위의 순서를 따라 해결책을 찾았다.
SHOW CREATE TABLE footable;
당신은 FK 제약 이름을 얻을 것입니다
ProjectsInfo_ibfk_1
이제이 제약 조건을 제거해야합니다. alter table commantd에 의해
alter table ProjectsInfo drop foreign key ProjectsInfo_ibfk_1;
그런 다음 테이블 열을 삭제하십시오.
alter table ProjectsInfo drop column clientId;
답변
테이블에서 InnoDB 엔진을 사용하는 경우 일반적으로이 오류가 발생합니다. 이 경우 외래 키를 삭제 한 다음 alter 테이블을 수행하고 열을 삭제해야합니다.
그러나 까다로운 부분은 열 이름을 사용하여 외래 키를 삭제할 수 없지만 대신 색인을 생성하는 데 사용되는 이름을 찾아야한다는 것입니다. 이를 찾으려면 다음을 선택하십시오.
테이블 생성 영역 표시; 왼쪽 상단 모서리에서 + 옵션을 클릭하고 전체 텍스트 raio 버튼을 클릭 한 다음 이동을 클릭하면 행이 표시됩니다. 색인의 이름이 다음과 같이 나타납니다.
CONSTRAINT region_ibfk_1 FOREIGN KEY (country_id) 참조 국가 (id) ON 업데이트에 대한 조치 없음 삭제 조치 없음 이제 간단히 다음을 발행하십시오.
테이블 영역 삭제 외래 키 region_ibfk_1 변경;
또는
더 간단하게 입력 :-alter table TableName drop foreign key TableName_ibfk_1 ;
테이블 이름 뒤에 _ibfk_1 을 추가 하여 다음과 같이 만드는 것이 유일 합니다 .- TableName _ibfk_1
