바뀜

2,353 바이트 추가됨 ,  2022년 9월 15일 (목) 17:30
28번째 줄: 28번째 줄:     
==MySQL 연동==
 
==MySQL 연동==
사전에 DB를 만들어두어야 한다.
+
 
 +
=== 사전 준비 DB세팅 ===
 +
사전에 DB를 만들어두어야 한다. DB를 만들어주었다면 다음을 진행하자.
 +
{| class="wikitable"
 +
!과정
 +
!설명
 +
!방법
 +
|-
 +
|기본 라이브러리 설치
 +
|아래 과정 중 에러가 나면 이것부터 시작하자.
 +
(보통 도커나 가상환경 등 최소한의 것들만설치되어 있는 환경에서 필요하다.)
 +
|<code>sudo apt-get install python3-dev default-libmysqlclient-dev build-essential</code>
 +
|-
 +
|연동드라이버 설치
 +
|mysqlclient 설치
 +
아래와 같은 에러가 뜨면 위부터 시작하자.
 +
 
 +
note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed
 +
|pip install mysqlclient
 +
|}
 +
 
 +
=== DB 설정 ===
 
{| class="wikitable"
 
{| class="wikitable"
 
!과정
 
!과정
49번째 줄: 70번째 줄:  
         'HOST': 'localhost',
 
         'HOST': 'localhost',
 
         'PORT': '3306',
 
         'PORT': '3306',
 +
        'OPTIONS': {
 +
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
 +
            'charset': 'utf8mb4',  # 테이블 생성할 때 유니코드 지정.(한국어 표현을 위해.)
 +
            'use_unicode': True,
 +
        }
 
     }
 
     }
 
}
 
}
54번째 줄: 80번째 줄:  
|-
 
|-
 
|반영하기
 
|반영하기
|이전에 백업한 데이터가 있다면 다음의 명령어를 쓰자.
+
|이전에 백업한 데이터가 있다면 다음의 명령어를 쓰자.
    
<code>python manage.py loaddata db.json</code>
 
<code>python manage.py loaddata db.json</code>
60번째 줄: 86번째 줄:  
|}
 
|}
    +
== MariaDB ==
 +
mySQL과 완전히 동일하게 진행하면 된다.
    +
다만, 설정파일 경로가 다르다. mysql은 <code>cd /etc/mysql/mysql.conf.d/</code>인 반면, mariadb는 <code>cd /etc/mysql/mariadb.conf.d/</code> 안에 있다.
 +
 +
=== mysql과의 차이 ===
 +
{| class="wikitable"
 +
!항목
 +
!mySQL
 +
!MariaDB
 +
|-
 +
|설정파일 디렉터리
 +
|<code>/etc/mysql/mysql.conf.d/</code>
 +
|<code>/etc/mysql/mariadb.conf.d/</code>
 +
|-
 +
|사용자 설정
 +
|client.cnf
 +
|50-client.cnf
 +
|-
 +
|
 +
|마지막 재실행 경로.
 +
|/etc/init.d/mariadb restart
 +
|}
          
=DB쿼리 사용하기=
 
=DB쿼리 사용하기=
python manage.py dbshell 를 통해 데이터베이스의 쿼리를 다를 수 있다.
+
python manage.py dbshell 를 통해 데이터베이스의 쿼리를 다룰 수 있다.
 +
 
 +
= 관련에러 =
 +
 
 +
=== utf-8' codec can't decode ===
 +
다양한 방법이 있겠지만... 어이없게 풀렸다.
 +
{| class="wikitable"
 +
!시도
 +
!설명
 +
|-
 +
|json 저장 유니코드 변경
 +
|<code>python manage.py dumpdata > db.json</code>에서 만든 백업파일이 utf-8로 인코딩 되어있지 않은 경우에 먹힌다.
 +
 
 +
메모장이든 어떤 것이든 아무 편집기에서 다른 이름으로 저장하여 utf-8로 인코딩 하여 저장한다.
 +
 
 +
그리고 이렇게 저장한 파일을 <code>python manage.py loaddata db.json</code>로 풀어내면.. 그간의 노력이 무색하게 된다;
 +
 
 +
[https://stackoverflow.com/questions/17843630/python-can-dumpdata-cannot-loaddata-back-unicodedecodeerror 링크]를 참조하였다.
 +
|-
 +
|DB기초 설정
 +
|DB의 인코딩이 utf-8로 되게끔 설정. [https://hongjuzzang.github.io/howto/mysql_django/ 링크]를 참조하자.
 +
|}
 
[[분류:2. 장고 설정]]
 
[[분류:2. 장고 설정]]