Notice
Recent Posts
Recent Comments
Tags
- XSS방어
- asp.net dropdownlist
- asp.net Select
- asp.net core Select
- javascript redirection
- TempData
- javascript 바코드 생성
- ViewData
- 바코드 생성하기
- javascript 바코드스캔
- ASP.Net Core 404
- SSD 복사
- XSS PHP
- 하드 마이그레이션
- 말줄임표시
- php 캐쉬제거
- jquery 바코드
- 파일업로드 체크
- 404에러페이지
- 맥 오라클설치
- django 엑셀불러오기
- 타임피커
- Mac Oracle
- javascript 유효성체크
- 강제이동
- jquery 바코드생성
- ViewBag
- 바코드 스캔하기
- 파일업로드 유효성체크
- 하드 윈도우 복사
웹개발자의 기지개
[Django] 마이그레이션 삭제 (특정앱 부분 다시 마이그레이션) 본문
python/Django
[Django] 마이그레이션 삭제 (특정앱 부분 다시 마이그레이션)
http://portfolio.wonpaper.net 2022. 4. 20. 18:07마이그레이션을 처리하다가 중간에 꼬여서 특정 테이블을 다시 만들고 해야 했는데,
이때 기존의 마이그레이션 처리와 꼬여서 해당 앱의 마이그레이션 삭제 후 조치 작업이 필요하였다.
필자는 테스트용 프로젝트내에 있는 member 앱에 대하여 적용시켜 보았다.
1. 먼저 현재 마이그레이션 내역 확인한다.
python manage.py showmigrations
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
|
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
[X] 0003_logentry_add_action_flag_choices
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
[X] 0009_alter_user_last_name_max_length
[X] 0010_alter_group_name_max_length
[X] 0011_update_proxy_permissions
[X] 0012_alter_user_first_name_max_length
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
member
[X] 0001_initial
[X] 0002_alter_member_options
sessions
[X] 0001_initial
|
cs |
2. member 앱의 마이그레이션 파일을 초기화 한다.
python manage.py migrate --fake member zero
1
2
3
4
5
6
|
Operations to perform:
Unapply all migrations: member
Running migrations:
Rendering model states... DONE
Unapplying member.0002_alter_member_options... FAKED
Unapplying member.0001_initial... FAKED
|
cs |
다시 마이그레이션 상태확인
python manage.py showmigrations
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
|
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
[X] 0003_logentry_add_action_flag_choices
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
[X] 0009_alter_user_last_name_max_length
[X] 0010_alter_group_name_max_length
[X] 0011_update_proxy_permissions
[X] 0012_alter_user_first_name_max_length
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
member
[ ] 0001_initial
[ ] 0002_alter_member_options
sessions
[X] 0001_initial
|
cs |
member 부분에 x 가 빠져있다.
3. member 앱의 마이그레이션 디렉토리 안에 __init__.py 파일을 빼고 모두 직접 수동 삭제한다.
다시 마이그레이션 상태확인
python manage.py showmigrations
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
[X] 0003_logentry_add_action_flag_choices
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
[X] 0009_alter_user_last_name_max_length
[X] 0010_alter_group_name_max_length
[X] 0011_update_proxy_permissions
[X] 0012_alter_user_first_name_max_length
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
member
(no migrations)
sessions
[X] 0001_initial
|
cs |
member 앱에는 마이그레이션이 없어졌다.
4. 마이그레이션 만들기
python manage.py makemigrations
1
2
3
4
|
Migrations for 'member':
member/migrations/0001_initial.py
- Create model Member
|
cs |
5. 페이크 마이그레이션 적용하기
python manage.py migrate --fake-initial
1
2
3
4
5
|
Operations to perform:
Apply all migrations: admin, auth, contenttypes, member, sessions
Running migrations:
Applying member.0001_initial... OK
|
cs |
기존에 테이블이 이미 있는데, 이를 페이크 형태로 적용시키는 방식이다.
6. 마이그레이션 최종 확인
python manage.py showmigrations
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
[X] 0003_logentry_add_action_flag_choices
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
[X] 0009_alter_user_last_name_max_length
[X] 0010_alter_group_name_max_length
[X] 0011_update_proxy_permissions
[X] 0012_alter_user_first_name_max_length
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
member
[X] 0001_initial
sessions
[X] 0001_initial
|
cs |
'python > Django' 카테고리의 다른 글
[Django] PHP exit 와 같은 기능 - 디버깅 기법 (0) | 2022.04.24 |
---|---|
[Django] ORM 참고사항 1 - get(), filter() (0) | 2022.04.23 |
[Django] 특정페이지로 특정데이터값 넘기기1 - javascript alert 띄우기 (0) | 2022.04.20 |
[Django] @csrf_exempt 사용 (0) | 2022.04.20 |
[Django] template tags and filters 짝수,홀수 구분 forloop.counter|divisibleby:2 (0) | 2022.04.07 |
Comments