그래서 데이터베이스의 테이블 중 하나에 기본 키를 추가하려고합니다. 지금은 다음과 같은 기본 키가 있습니다.
PRIMARY KEY (user_id, round_number)
여기서 user_id는 외래 키입니다.
나는 이것을 변경하려고합니다.
PRIMARY KEY (user_id, round_number, created_at)
테이블 구조보기에서 기본 키 아이콘을 클릭하여 phpmyadmin에서이 작업을 수행하고 있습니다.
이것은 내가 얻는 오류입니다.
#1025 - Error on rename of './database/#sql-2e0f_1254ba7' to './database/table' (errno: 150)
InnoDB 테이블 엔진이있는 MySQL 데이터베이스입니다.
답변
변경하려는 기본 키를 참조하는 외래 키가있는 다른 테이블이있을 수 있습니다.
어떤 테이블이 오류를 일으켰는지 알아 보려면 실행 SHOW ENGINE INNODB STATUS
한 다음 LATEST FOREIGN KEY ERROR
섹션 을 살펴보십시오 .
답변
앞서 말했듯이 FK를 제거해야합니다. Mysql에서 다음과 같이하십시오.
ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;
ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
답변
Google을 통해이 질문을받는 사람들을 위해 … 외래 키 역할을하는 필드의 이름을 바꾸려고 할 때이 오류가 발생할 수도 있습니다.
답변
PHPMyAdmin 또는 MySQL에서이를 우회하려면 속성 이름을 변경하기 전에 먼저 외래 키 제약 조건을 제거하십시오.
(PHPMyAdmin 사용자의 경우 : PHPMyAdmin에서 FK 제한을 제거하려면 속성을 선택한 다음 테이블 구조 아래의 도구 모음에서 “인쇄보기”옆에있는 “관계보기”를 클릭하십시오.)
답변
FOREIGN KEY 인 열을 삭제하려는 경우 열 이름이 아닌 올바른 이름을 찾아야합니다. 예 : 서버 테이블의 외래 키인 알람 테이블에서 서버 필드를 삭제하려는 경우.
SHOW CREATE TABLE alarm;
CONSTRAINT `server_id_refs_id_34554433` FORIEGN KEY (`server_id`) REFERENCES `server` (`id`)
라인을
찾으십시오 .ALTER TABLE `alarm` DROP FOREIGN KEY `server_id_refs_id_34554433`;
ALTER TABLE `alarm` DROP `server_id`
알람 테이블에서 외래 키 서버가 삭제됩니다.
답변
답변
외래 키를 추가 할 때이 오류가 발생한 경우 하위 테이블의 값이 상위 테이블에 없을 수 있습니다.
외래 키를 추가해야하는 열에 대해 모든 값이 0으로 설정되어 있고 참조하는 테이블에서 값을 사용할 수 없다고 가정 해 보겠습니다.
부모 테이블에있는 값을 설정 한 다음 외래 키를 추가하면 효과가 있습니다.