일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Visual Studio
- PyCharm
- github
- dbadvgrid
- Push
- delphi 10.3
- templates
- get_object_or_404
- pyhcarm
- hackerrank
- GIT
- COMMIT
- declare
- HTML
- python3
- 중복제거
- pythonanywhere
- MSSQL
- queryset
- python 3.7
- anaconda3
- 백준
- Delphi
- Django
- advColumnGrid
- c#
- blog
- rank
- TMS
- 델파이
- Today
- Total
DevHyun
[DevHyun's Blog] 사용 SQL을 sqlite3(local)에서 가상database(mysql)로 변경해보자! 본문
[DevHyun's Blog] 사용 SQL을 sqlite3(local)에서 가상database(mysql)로 변경해보자!
D3V3L0P3R 2020. 10. 30. 19:46
* 상황설명
우선 sqlite3를 사용하다보니 pythonanywhere에서 배포 할때 문제가 생겼다.
pythonanywhere에서 배포하려면 pull을 해야하는데 이때 db.sqlite3 파일도 같이 pull 되어버려서
덮어씌어지는 현상이 발생하였다.
이렇게 되면 pythonanywhere에서 배포된 페이지에서 입력된 데이터들은, pull을 기점으로 local 데이터로 덮어씌어지게 된다.
예를들어
1. local(127.0.0.1)에서 테스트로 test / 1 이란 포스트를 올렸고, 이상태에서 github 로 push
2. devhyun.pythonanywhere.com 에서 테스트로 testtest / 2 란 포스트를 올린 뒤 github에서 pull
이렇게 되면 pythonanywhere에서 입력했던 testtest 포스트가 없어지고 local에서 입력한 test 포스트만 남게된다.
그래서 사용 db를 local(sqlite3)에서 pythonanywhere에서 제공하는 가상환경의 db(mysql)로 변경하기로 결심!
* 참고로 pythonanywhere에서는 mysql, Postgres 두가지를 제공한다.
이렇게 진행하였지만 mysql은 pythonanywhere에서 배포했을 때만 사용이 가능했다.
local에서는 devhyun.mysql.pythonanywhere-services.com 사이트에 접속 불가..
그래서 부득이하게 local에서는 sqlite3를 쓰고 pythonaywhere에서는 mysql 써야 할듯..
아직까지는 방법을 찾지 못하였음(20201030)
1. pythonanywhere - database에서 mysql 선택 후 비밀번호 설정
2. cretae database name에 사용하고 싶은 database 이름 설정
3. host address 및 user name 확인
2. settings.py에서 database 지정 부분 수정
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'devhyun$devhyun',
'USER': 'devhyun',
'PASSWORD': '비밀번호',
'HOST': 'devhyun.mysql.pythonanywhere-services.com',
'PORT': '3306'
},
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"
},
}
3. pythonanywhere에 재배포
4. db정보를 변경하였으니 migration 진행
5. pythonanywhere - console 창에서 makemigrations - migrate 진행
cd DevhyunDjangoBlog source myvenv/bin/activate python manage.py makemigrations Blog python manage.py migrate Blog |
* db 정보를 변경하였으니 makemigrations를 통해 migration을 준비한 후 migrate 진행
6. Table '테이블 명' already exists" 오류 발생
: pythonanywhere - database - your databases 에서 사용하고자하는 database의 console 시작(start a console on)
: mysql > show tables;
: mysql > drop table 테이블명;
: 모든 테이블 삭제 (데이터 베이스 초기화)
: 다시 migrate (makemigrations 해줄 필요까진 없음)
7. db를 변경하였으니 admin 계정도 새로 생성
python manage.py createsuperuser |
8. You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. 에러 발생
: migration이 제대로 안되었으니 진행 후 createsuperuser 하라는 에러
: mysql console에서 show tables;로 확인해보니 admin, auth, contenttypes, sessions table이 생성되지 않았음
: 나는 migrate를 잘 진행했는데 저런 에러가 떠서 6번을 다시 진행했더니 해결 되었음
9. 이후 db.sqlite3는 로컬에서만 사용하도록 gitignore 설정 진행하였음
: db.sqlite3는 git ignore file 만들면 자동으로 추가됨.
d3v3lop3r.tistory.com/40?category=818119
'Web > Django&Python Blog Projecct' 카테고리의 다른 글
[DevHyun's Blog] Django&Python으로 만든 Blog 개선하기! (0) | 2020.10.27 |
---|---|
[DevHyun's Blog] Django&Python으로 만든 Blog에 로그인한 사용자만 글쓰게 만들기! (0) | 2020.10.21 |
[DevHyun's Blog] Django Form 만들기(일반 사용자가 Post 수정 가능하게 만들기) (0) | 2020.10.21 |
[DevHyun's Blog] Django Form 만들기(일반 사용자가 Post 추가 가능하게 만들기) (0) | 2020.10.21 |
[DevHyun's Blog] Django&Python으로 만든 Blog App 확장(extending)하기 (0) | 2020.10.19 |