IT

Mysql: 열 문자 집합 설정

itgroup 2022. 11. 17. 21:08
반응형

Mysql: 열 문자 집합 설정

기존 테이블이 있는데 특정 컬럼의 문자 집합만 utf-8로 변환하고 싶습니다.

이 명령어가ALTER TABLE table_name CONVERT TO CHARACTER SET utf8테이블 전체에 해당되지만 컬럼 고유의 명령어를 찾고 있습니다.

그것에 대한 명령어가 있나요?

이것을 시험해 보세요.

ALTER TABLE t MODIFY col1 CHAR(50) CHARACTER SET utf8mb4;

나도 그렇게 생각해, 언제나 도움이 될 수 있어...최근에 데이터베이스를 수정했습니다.utf8에서 utf8mb4로 이동합니다.변경을 생성할 수 있는 스크립트는 다음과 같습니다.

테이블을 변경하는 SQL 명령 생성:

SELECT CONCAT("ALTER TABLE `",`TABLE_NAME`,"` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;") 
FROM `information_schema`.`TABLES` 
WHERE `TABLE_SCHEMA` = 'xxxx';

SQL 명령을 생성하여 각 열을 변경합니다.

SELECT CONCAT("ALTER TABLE `",`TABLE_NAME`,"` MODIFY `",`COLUMN_NAME`,"` ",COLUMN_TYPE," CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ",IF(`IS_NULLABLE`='YES', 'NULL', 'NOT NULL')," ",IF(`COLUMN_DEFAULT` IS NOT NULL, CONCAT(" DEFAULT '", `COLUMN_DEFAULT`, "'"), ''),";") 
FROM `information_schema`.`COLUMNS` 
WHERE `TABLE_SCHEMA` = 'xxx' AND `TABLE_NAME` = 'xxxx' AND (`CHARACTER_SET_NAME` IS NOT NULL OR `COLLATION_NAME` IS NOT NULL);

관계를 만드는 외부 키와 기본 키의 경우 열을 수정하기 전에 초기 키 검사를 비활성화해야 합니다.

SET FOREIGN_KEY_CHECKS=0;

를 유효하게 합니다.

SET FOREIGN_KEY_CHECKS=1;

1명 이하가 나에겐 통했어.

ALTER TABLE table_name   
MODIFY column_name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci;

이건 나한테 효과가 있었어.

ALTER TABLE `table_name` CHANGE `column_name` `column_name` TEXT CHARACTER SET utf8 COLLATE utf8mb4_unicode_ci; 

언급URL : https://stackoverflow.com/questions/15781886/mysql-set-column-charset

반응형