구성
탭에서 파라미터 그룹을 확인 할 수 있어요. 현재 전 세계 모든 언어가 호환되는 UTF-8을 표준규격으로 사용하는 것이 스탠다드이다.
캐릭터 셋 설절은 DB 구축이 완료된 이후 차후에 변경 할 수 있지만, 캐릭터 셋 설정이 사전에 되어 있지 않으면 차후 변경 시에 DB의 모든 내용을 변경해야 하는 경우도 생기므로 DB 구축에 앞서서 사전에 설정하는 것이 좋다.
MySQL 설정 값 확인 명령어는
set variables like '%character%';
set variables like '%collation%';
표준 시간대 역시 위 character set 상황과 비슷하게 흘러 가므로 확인하고 설정해주어야 한다.
select now();
보는 것과 같이 GMT+0, 즉 런던시에 해당하는 시간 규격이다. 표준시간대 역시 캐릭터 셋과 같이 차이가 있다.
이는 추후 DB 구축 시 날짜 및 시간을 관리하는 측면에 있어서도 큰 문제를 발생할 수 있으므로 이에 대한 사전 변경이 필요함.
표준 시간대와 관련된 것은 time_zone
으로 검색하면 결과를 확인 할 수 있다.
윈도우나 리눅스 서버에서 MySQL을 자체적으로 구현할 경우에는 환경 변수에 대한 변경 사항을 MySQL환경 설정 파일을 통해서 직접 갑을 입력하고 재시작하면 된다.
하지만 DB 인스턴스의 경우에는 그렇게 안된다.DB에 접속하여 SET 명령어를 이용해서 DB를 재시작 하면 변경값이 사라져 버리는 제한도 있다.
아래 명령어로 간단하게 생성함
create database testdb;
show databases;
생성된 DB를 아래와 같이 사용함.
use testdb;
장고 파일중 settings.py에서 아래 DATABASE 부분을 수정합니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '엔드포인트',
'NAME': 'DB이름',
'USER':'admin',
'PASSWORD':'비밀번호',
'PORT':'3306',
'OPTIONS':{
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
}
}
}
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", 옵션은 입력 방지를 위한 옵션이에요. 이 부분이 없으면 데이터 입력 시 최대 길이를 넘는 데이터 삽입 시 에러를 일으키지 않고 일부 글자가 잘리는 현상이 발생해요.
하지만 이 옵션을 넣어줘서 오류를 발생시킵니다.
리눅스 서버인 경우 mysqlclient를 설치해주어야 해요.
sudo apt-get install default-libmysqlclient-dev
완료가 되었으면 가상환경에서 pip 관리자를 사용하여 설치 할게요.
pip install mysqlclient
그리고 migrations 하는 것 잊지마세요.
python manage.py makemigrations
python manage.py migrate