[mysql] # 1025- ‘./database/#sql-2e0f_1254ba7’을 ‘./database/table’로 이름을 바꿀 때 오류 발생 (errno : 150)

그래서 데이터베이스의 테이블 중 하나에 기본 키를 추가하려고합니다. 지금은 다음과 같은 기본 키가 있습니다.

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 인 열을 삭제하려는 경우 열 이름이 아닌 올바른 이름을 찾아야합니다. 예 : 서버 테이블의 외래 키인 알람 테이블에서 서버 필드를 삭제하려는 경우.

  1. SHOW CREATE TABLE alarm;CONSTRAINT `server_id_refs_id_34554433` FORIEGN KEY (`server_id`) REFERENCES `server` (`id`)라인을
    찾으십시오 .
  2. ALTER TABLE `alarm` DROP FOREIGN KEY `server_id_refs_id_34554433`;
  3. ALTER TABLE `alarm` DROP `server_id`

알람 테이블에서 외래 키 서버가 삭제됩니다.


답변

이 문제가 있었는데 외래 키

Relation View(아래 이미지와 같이)를 클릭 한 다음 제거 할 필드의 이름을 찾은 다음 Foreign key constraint (INNODB)열 아래에서 아무것도 선택하지 마십시오! 외래 키가 없음을 의미합니다.

여기에 이미지 설명 입력

작동하기를 바랍니다!


답변

외래 키를 추가 할 때이 오류가 발생한 경우 하위 테이블의 값이 상위 테이블에 없을 수 있습니다.

외래 키를 추가해야하는 열에 대해 모든 값이 0으로 설정되어 있고 참조하는 테이블에서 값을 사용할 수 없다고 가정 해 보겠습니다.

부모 테이블에있는 값을 설정 한 다음 외래 키를 추가하면 효과가 있습니다.