TIL 200325

3203 단어 TILTIL

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로 설정되어 있는지 확인

좋은 웹페이지 즐겨찾기