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.