My Image

Django 포스팅

[Django] 장고 마이그레이션 Updated upstream 충돌 오류 해결

Doyeon0430 | 2023년 06월 16일

Django 이미지

이번시간에는 장고를 사용하는 중 로컬 저장소에서 git push를 하고 원격 저장소에 git pull을 했을 때

발생하는 마이그레이션 문법 오류에 대해 원인을 알아보고 결과를 해결하고자 합니다.

추가적으로 로컬 저장소와 원격 저장소의 의미를 배워보겠습니다.

 

  1. Django 마이그레이션 - 로컬 저장소와 원격 저장소

  2. Django 마이그레이션 - 오류 원인

  3. Django 마이그레이션 - 오류 해결

 

 

1. Django 마이그레이션 - 로컬 저장소와 원격 저장소

깃에 버전을 관리하는 시스템으로 사용자가 사용하는 저장소원격으로 이용되는 저장소가 있습니다.

 

로컬 저장소

사용자에 컴퓨터의 해당 프로젝트를 깃으로 관리하고 보관하는 저장소입니다.

이 곳에는 과거의 사용했던 파일과 버전에 수정이나 브랜치 등을 확인 할 수 있습니다.

 

원격 저장소

사용자의 프로젝트를 팀과 같은 협업에 사용될 때 이용하도록 중앙에서 만들어진 저장소입니다.

대표적으로 깃허브와 bitbucket 등에서 관리해주며 자주 사용되고 있습니다.

 

 

2. Django 마이그레이션 - 오류 원인

마이그레이션 실행 할 때 발생하는 오류의 원인을 알아보겠습니다.

 

manage.py 오류 내용

  File "/home/ubuntu/projects/mysite/movie/migrations/0021_alter_movie_meta.py", line 1
    <<<<<<< Updated upstream
    ^
SyntaxError: invalid syntax

보통은 장고에서 모델을 추가하거나 수정한 뒤 푸쉬를 하고 원격저장소에서 git pull 할 때 마이그레이션을 실행합니다.

그러나 위와 같은 문법 오류가 발생할 수 있습니다.

파일의 코드가 충돌해서 내용이 추가되거나 삭제되었다는 뜻으로 충돌 표시를 제거하면 됩니다.

 

 

3. Django 마이그레이션 - 오류 해결

원격 저장소에서 충돌 된 부분을 로컬 저장소와 동일하게 수정해주시면 됩니다.

 

1. [0021_alter_movie_meta.py] 수정 전

# Generated by Django 4.2.1 on 2023-05-15 18:46
<== Updated upstream

# Generated by Django 4.2.1 on 2023-05-30 18:46
<== Updated upstream

# Generated by Django 4.2.1 on 2023-05-31 05:00

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('movie', '0020_alter_movie_meta'),
    ]

    operations = [
        migrations.AlterField(
            model_name='movie',
            name='meta',
            field=models.CharField(max_length=130),
        ),
    ]

0021_alter_movie_meta을 보면 updated uptream이라는 입력하지도 않은 이상한 문구가 생겼습니다.

이 파일들을 수정해서 로컬 저장소 파일과 동일하게 만들어주면 됩니다.

 

2. [0021_alter_movie_meta.py] 수정 후

# Generated by Django 4.2.1 on 2023-05-31 05:00

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('movie', '0020_alter_movie_meta'),
    ]

    operations = [
        migrations.AlterField(
            model_name='movie',
            name='meta',
            field=models.CharField(max_length=130),
        ),
    ]

수정된 마이그레이션 파일입니다.

저는 리눅스에서 파일을 수정했는데 cat 명령어로 파일 내용을 확인하고 nano 명령어로 수정했습니다.

 

3. CMD 입력

python manage.py makemigrations

다시 실행하니 정상적으로 작동했습니다.

글을 마치며 로컬 저장소와 원격 저장소에 대해 알아보았습니다.

추가적으로 장고에서 마이그레이션을 했을 때 발생하는 문법 오류에 대해 원인과 해결방법을 배워봤습니다.

댓글 (0)

    댓글이 없습니다.

간편 댓글 작성

My Image My Image My Image My Image