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;
'프로그래밍' 카테고리의 다른 글
sevice 로그 확인하기 (0) | 2023.04.07 |
---|---|
시퀀스(sequence) 생성 및 확인, 초기화 방법 (0) | 2023.02.17 |
scp 파일 전송 방법(서버 to 서버) (0) | 2023.02.10 |
16진수 한 자리는 몇 비트일까? (0) | 2023.01.10 |
psycopg2에서 데이터를 dictionary 형태로 가져오는 방법 (0) | 2023.01.08 |