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


81

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

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 데이터베이스입니다.


1
Google을 사용한 빠른 검색은이 문제가 제약과 관련이 있다는 생각을줍니다. 가능한 유용한 링크 : dev.mysql.com/doc/refman/5.0/en/innodb-error-codes.htmlsimplicidade.org/notes/archives/2008/03/mysql_errno_150.html
Lekensteyn

답변:


138

변경하려는 기본 키를 참조하는 외래 키가있는 다른 테이블이있을 수 있습니다.

어떤 테이블이 오류를 일으켰는지 알아 보려면 실행 SHOW ENGINE INNODB STATUS한 다음 LATEST FOREIGN KEY ERROR섹션 을 살펴보십시오 .


2
제 경우에는 데이터베이스가 전혀 테이블없이 새로 생성되었습니다.
Guilherme Ferreira

33

앞서 말했듯이 FK를 제거해야합니다. Mysql에서 다음과 같이하십시오.

ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;

ALTER TABLE `table_name` DROP INDEX `id_name_fk`;

1
귀하의 답변은 정말 도움이되었습니다. DROP FOREIGN KEY로 문제가 해결되었습니다. 감사합니다
Ram Babu S

1
이것은 내 문제도 해결했지만 동일한 스크립트가 내 개발 MySQL에서 작동했습니다. 이것이 MySQL 버전에서 변경된 것입니까?
Bancarel Valentin

24

Google을 통해이 질문을받는 사람들을 위해 ... 외래 키 역할을하는 필드의 이름을 바꾸려고 할 때이 오류가 발생할 수도 있습니다.


13

PHPMyAdmin 또는 MySQL에서이를 우회하려면 속성 이름을 변경하기 전에 먼저 외래 키 제약 조건을 제거하십시오.

(PHPMyAdmin 사용자의 경우 : PHPMyAdmin에서 FK 제한을 제거하려면 속성을 선택한 다음 테이블 구조 아래의 도구 모음에서 "인쇄보기"옆에있는 "관계보기"를 클릭하십시오.)


1
저는 이것이 가장 정확한 대답이라고 생각합니다
MontrealDevOne

4

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`

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


4

이 문제가 있었는데 외래 키

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

여기에 이미지 설명 입력

작동하기를 바랍니다!


0

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.