컬럼에 "COLLATE utf8mb4_unicode_ci" 를 삭제하고 싶다면 다음을 진행한다.


1. 테이블 스키마에 COLLATE utf8mb4_unicode_ci 를 먼저 삭제한다.
> ALTER TABLE samuel_test DEFAULT CHARACTER SET utf8mb4;


2. 그다음에 컬럼에 COLLATE utf8mb4_unicode_ci 삭제한다 (먼저 컬럼 속성을 변경하지 않는다)

> ALTER TABLE samuel_test CHANGE `SESSION_ID` `SESSION_ID` char(36) NOT NULL; 




예시는 다음과 같다.  아래와 같은 테이블이 있다.



DROP TABLE samuel_test;


# dummy

CREATE TABLE `samuel_test` (

  `id` char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,

  `name` bigint(20) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;



# 안바뀐다. 

ALTER TABLE samuel_test CHANGE `id` `id` char(36) NOT NULL;



# 먼저 테이블 스키마에 COLLATE 부분을 먼저 정리

ALTER TABLE samuel_test DEFAULT CHARACTER SET utf8mb4;


# 테이블 스키마에 COLLATE 부분이 정리된 것을 확인할 수 있다.

SHOW CREATE TABLE samuel_test;


ALTER TABLE samuel_test CHANGE `id` `id` char(36) NOT NULL;


SHOW CREATE TABLE samuel_test;



이제 제대로 정리되었음을 알 수 있다.



samuel_test, CREATE TABLE `samuel_test` (

  `id` char(36) NOT NULL,

  `name` bigint(20) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4


Posted by '김용환'
,