본문 바로가기
프로그래밍

[MariaDB] 테이블 인코딩 변경하기

by choihyuunmin 2023. 2. 11.
728x90

MariaDB에서 테이블 생성시 특별히 지정을 해주지 않으면 한글값을 insert할 때 에러가 발생한다.

따라서 테이블 생성시 인코딩을 지정해주거나, 테이블 속성을 변경시켜야 한다.

 

MariaDB [(none)]> status
--------------
mysql  Ver 15.1 Distrib 10.5.9-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:          110
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.5.9-MariaDB-log MariaDB Server
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8
Conn.  characterset:    utf8

가장 먼저 MariaDB의 속성값을 확인한다.

status  명령어로 확인해보면 Server chracterset과 Client characterset을 확인할 수 있다. 데이터베이스 생성시에 따로 인코딩을 지정해주지 않으면, Server characterset의 값으로 자동 설정된다. 

 

실제로 적용된 값을 확인해보면

MariaDB [(none)]> show variables like 'char%';
+--------------------------+----------------------------------------------------------------+
| Variable_name            | Value                                                          |
+--------------------------+----------------------------------------------------------------+
| character_set_client     | utf8                                                           |
| character_set_connection | utf8                                                           |
| character_set_database   | utf8mb4                                                        |
| character_set_filesystem | binary                                                         |
| character_set_results    | utf8                                                           |
| character_set_server     | utf8mb4                                                        |
| character_set_system     | utf8                                                           |
| character_sets_dir       | /usr/local/mariadb-10.5.9-linux-systemd-x86_64/share/charsets/ |
+--------------------------+----------------------------------------------------------------+

다음과 같다.

 

mairaDB의 config값을 변경하여 status 값을 변경할 수 있지만, config 파일은 되도록 안건드는게 좋으므로 .. 

테이블 단위로 변경하는 방법을 사용한다.

 

 


 

  • 테이블 단위
ALTER TABLE 테이블명 CONVERT TO CHARACTER SET utf8;

MySQL이나 MariaDB는 컬럼 단위별로 캐릭터셋을 지정해줄수 있기 떄문에 테이블만 변경했다고 모두 적용되지 않는다.

컬럼도 같이 변경해주어야 한다.

 

  • 컬럼 단위
ALTER TABLE 테이블명 MODIFY COLUMN 컬럼 VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;