728x90
반응형
🎯 Goal
- MariaDB 인코딩 설정을 utf8로 변경하는 방법을 안다.
⚠️ 문제 현상
데이터베이스 데이터 추가하는데 아래와 같은 에러가 발생 했다.
MariaDB [iterview]> insert into customer(cust_name) values('권소현');
ERROR 1366 (22007): Incorrect string value: '\xC7\xC1\xB7\xD0\xC6\xAE...' for column `iterview`.`tag`.`name` at row 1
ERROR 1366 (22007): Incorrect string value: '\xC7\xC1\xB7\xD0\xC6\xAE...' for column `iterview`.`tag`.`name` at row 1 SQL Error [1366] [22007]: (conn=5) Incorrect string value:
🔑 에러 원인
mariaDB에서는 charset이 default로 설정되어 있어 한글을 추가할려고 한 순간
한글 인코딩 에러가 난 것이다.
💊 해결 방법
MariaDB 인코딩 설정을 utf8로 변경해야 한다.
USE 데이터베이스명;
ALTER DATABASE 데이터베이스명 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE CUSTOMER MODIFY COLUMN 컬럼명 타입 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
사용예시
1. 데이터베이스 생성
-- 데이터베이스 생성 (CREATE)
create database lds;
-- 데이터베이스 선택 (USE)
use lds;
-- 데이터베이스 확인
show databases;
2. 테이블 생성
/* [테이블 생성]
* 문의 - 문의 정보
*/
CREATE TABLE CUSTOMER(
cust_idx INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -- 자동증가옵션
cust_date DATE NOT NULL, -- null 비허용
cust_name VARCHAR(100),
cust_email VARCHAR(100),
cust_hp VARCHAR(13),
cust_question TEXT
);
3. 인코딩 설정
인서트를 하기 전에 인코딩 설정을 한다.
-- 인코딩 설정
USE lds;
ALTER DATABASE lds CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE CUSTOMER MODIFY COLUMN cust_name VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE CUSTOMER MODIFY COLUMN cust_email VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE CUSTOMER MODIFY COLUMN cust_hp VARCHAR(13) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE CUSTOMER MODIFY COLUMN cust_question TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
4. 데이터 인서트
INSERT INTO CUSTOMER (cust_date, cust_name, cust_email, cust_hp, cust_question)
VALUES (NOW(), '권소현', 'shkwon.msd@naver.co.kr', '01012345678', '프로젝트 의뢰합니다.');
📝 조치 결과
발생했던 오류가 해결된 모습을 확인할 수 있다.
728x90
반응형