MySQL에서 열 이름을 바꾸는 중에 오류가 발생했습니다


434

테이블의 열 이름을 어떻게 바꾸 xyz나요? 열은 다음과 같습니다.

Manufacurerid, name, status, AI, PK, int

이름을 바꾸고 싶습니다 manufacturerid

PHPMyAdmin 패널을 사용해 보았지만이 오류가 발생합니다.

MySQL said: Documentation
#1025 - Error on rename of '.\shopping\#sql-c98_26' to '.\shopping\tblmanufacturer' (errno: 150)

5
외래 키 참조가있는 테이블을 변경하려고합니다.
mellowsoon

답변:


747

Lone Ranger는 매우 가깝습니다. 실제로 이름이 바뀐 열의 데이터 유형도 지정해야합니다. 예를 들면 다음과 같습니다.

ALTER TABLE `xyz` CHANGE `manufacurerid` `manufacturerid` INT;

기억하십시오 :

  • INT를 열 데이터 유형 (필수)으로 바꾸십시오.
  • 틸드 / 백틱 (`)은 선택 사항입니다

12
열에 응답 오류가 발생하는 외래 키가 포함되어 있으므로 외래 키를 삭제하고 테이블을 변경하고 외래 키를 추가해야합니다 (먼저 백업하는 것이 좋습니다). 오른쪽 클릭으로 이름을 변경하여 변경 할 수 있습니다 테이블에-테이블 변경
Chris Sim

7
이 솔루션에서 Null 허용 여부, 기본값 등과 같은 다른 모든 열 정의는 손실됩니다 ( stackoverflow.com/questions/8553130/… 참조 ).
Dejan

따라서 기본적으로 MODIFY column <TYPE>(열을 재정의하는 대신 ) CHANGE column new_column <TYPE>?
mwfearnley

SHOW CREATE TABLE table_name현재 열 정의를 파악하는 데 도움이됩니다
Mr. Deathless

@ Dejan 덕분에 이것은 정말 성가시다. 왜 다른 수정자를 지정할 수 없을 때 유형이 필요한가? 유형 + 수정자가 필요하거나 전혀 필요하지 않습니다.
JMac

43

표준 Mysql 이름 바꾸기 문은 다음과 같습니다.

ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name 
CHANGE [COLUMN] old_col_name new_col_name column_definition 
[FIRST|AFTER col_name]

이 예제의 경우 :

ALTER TABLE xyz CHANGE manufacurerid manufacturerid datatype(length)

참조 : MYSQL 5.1 ALTER TABLE 구문


40

MYSQL의 경우 :

ALTER TABLE `table_name` CHANGE `old_name` `new_name` VARCHAR(255) NOT NULL;

오라클 :

ALTER TABLE `table_name` RENAME COLUMN `old_name` TO `new_name`;

3
"MySQL의 열 이름으로 사용하면 작동하지 않습니다 . 아무것도 사용하지 않거나`를 사용하십시오.
Alexis No

13

편집하다

다음을 사용하여 필드 이름을 바꿀 수 있습니다.

ALTER TABLE xyz CHANGE manufacurerid manufacturerid INT

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html


1
# 1064-SQL 구문에 오류가 있습니다. 1 행에서 ''근처에서 사용할 올바른 구문에 대해서는 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오.
Bharanikumar

17
이것은 유용하지만 인용 한 문서에는 해당되지 않습니다. "CHANGE 또는 MODIFY를 사용할 때 column_definition에는 데이터 유형 및 새 열에 적용해야하는 모든 속성이 포함되어야합니다. [...] 원래 정의에있는 속성 그러나 새로운 정의를 위해 명시되지 않은 것은 이월되지 않았다. "
artfulrobot

"ALTER TABLE xyz CHANGE manufacurerid manufacturerid 데이터 유형 (길이)"
Chris Sim

7

명령을 변경하는 올바른 구문은 다음과 같으므로 구문 문제가 있습니다. ALTER TABLE tablename CHANGE OldColumnName NewColunmName DATATYPE;


2

MySQL 5.x에서는 다음을 사용할 수 있습니다.

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name DATATYPE NULL DEFAULT NULL;

1

MySQL에서 열 이름 바꾸기 :

ALTER TABLE mytable CHANGE current_column_name new_column_name DATATYPE;

0

테이블 변경 변경;

예:

ALTER TABLE global_user CHANGE deviceToken deviceId VARCHAR(255) ;

-5

통사론

테이블 변경 table_name 열 이름이전 열 이름새 열 이름으로 바꿉니다 .

예:

테이블 라이브러리 이름 바꾸기 열 비용가격으로 변경 ;


2
mysql에서 RENAME은 열이 아닌 테이블의 이름을 바꾸는 데 사용되며 열의 이름을 바꾸려면 CHANGE를 사용하십시오.
jathin

질문은 MySQL에 대한 것입니다-이것은 MySQL에서 유효한 구문이 아닙니다.
tjbp

다른 사람들이 지적했듯이 유효한 MySQL 구문을 사용하십시오.
fool4jesus

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