TIL 200325
1. 오늘
-
heidiSQL을 이용해 테이블을 생성했다.
-
테이블 생성시 문자세트(Character Set) 설정을 변경하는 법을 익혔다.
-
기본 문자세트인 latin1문자세트는 영어를 주 언어로 사용하는 영어권 국가들이 사용한다.
-
이 경우엔 인코딩 및 디코딩 결과에 문제를 일으키지 않지만 한국을 비롯한 아시아 같은 국가들의 언어는 문자가 깨져서 입력되거나 출력시 깨져 보이는 결과가 일어날 수 있다.
-
문자세트는 데이터베이스 생성 단계에서 특정해야 이후 문제가 발생하지 않는다. UTF 8로 인코딩된 유니코드 문자세트로 DB를 생성하는 명령어는 아래와 같다.
-
heidiSQL에서 DB를 생성할 땐 다음과 같다.
-
MySQL 콘솔에서 이미 생성된 DB의 문자세트를 확인하는 방법은 다음과 같다.
1) mysql 콘솔 로그인
$ mysql -u root -p
2) 현재 생성된 데이터베이스 목록조회
mysql > show database;
3) 문자세트를 확인하고 싶은 데이터베이스 선택(여기서는 omeka 디비 선택)
mysql > use omeka;
4) omeka라는 DB의 문자세트 확인하기
mysql > show variables like ‘character_set%’;
- 위 화면에서 omeka라는 db의 문자세트는 utf8이지만 character_set_server 변수명(Variable name)의 변수 값(Value)이 latin1인 것을 확인할 수 있다.
*character_set_server는 MySQL 소프트웨어 설치시 기본 latin1으로 설치되기 때문에 mysql 데이터베이스 생성시 문자세트를 지정하는 것만으론 변경할 수 없다. - 만약 MySQL 데이터베이스를 영구적으로 UTF-8 모드로만 사용하길 원하는 경우엔 아래와 같이 MySQL 설치 이후 mysql 환경 설정 파일을 강제로 수정한 후 저장한 다음 mysql 서비스를 재실행하면 모든 셋팅이 UTF-8 모드로 기본 설정된다.
- 이 경우 DB 생성 명령어도 문자세트 지정 없이 create database test; 명령어만 입력해도 test라는 DB는 문자세트가 모두 UTF-8 모드로 셋팅된다.
MySQL 5.7 버젼의 환경설정파일명은 mysqld.cnf이며 서버상의 기본 경로는 아래와 같다.
# mysqld.cnf 경로 : /etc/mysql/mysql.conf.d/mysqld.cnf
환경설정파일의 수정 방법은 다음과 같습니다.
1) mysqld.cnf 파일을 에디터로 열기
$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
2) 화살표로 강조된 부분만 해당 라인에 추가
[mysqld_safe]
default-character-set=utf8 <<<
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
character-set-server=utf8 <<<
collation-server=utf8_unicode_ci <<<
init_connect = set collation_connection = utf8_unicode_ci <<<
init_connect = set names utf8
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
이하 생략…
#
[client]
default-character-set=utf8 <<<
[mysqldump]
default-character-set=utf8 <<<
3) 저장하고 종료
4) MySQL 서비스 재시작
$ sudo service mysql restart
5) MySQL 콘솔에 다시 로그인 후 DB를 문자세트 지정 없이 생성해본 후 해당 DB의 문자세트가 UTF-8로 설정되어 있는지 확인
Author And Source
이 문제에 관하여(TIL 200325), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@whdid502/TIL-200325저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)