pymysql.err.OperationalError: (1091, "Can't DROP ''; check that column/key exists")

x·2022년 10월 21일
0

문제, 원인

협업할 때 이미 공유된 migration 파일은 직접 수정하면 안되고 makemigration으로 수정 사항을 추가해줘야하는데 그러지 않아서 발생하는 문제.

pymysql.err.OperationalError: (1091, "Can't DROP 'a'; check that column/key exists")

DB table에 보면 드랍할 수 없다고 하는 컬럼이 없다. 그래서 에러가 발생한다.

마이그레이션 파일을 보면 a를 삭제하려고 하는데, 이것보다 이전 파일에는 AddField가 존재한다. 다른 사람이 이전 파일에서 AddField를 사용했고 나는 이미 그 마이그레이션 파일 이후까지 적용을 해버린 것 같다.

class Migration(migrations.Migration):

    dependencies = [
        ('products', '0024_auto_20221018_1637'),
    ]

    operations = [
        migrations.RemoveField(
            model_name='a',
            name='a',
        ),
	]

해결 방법

마이그레이션 파일을 적용하는 게 목적이므로 AddField() 를 사용해서 컬럼을 만들고 바로 삭제해버렸다. 그리고 다시 AddField()를 지워버렸다.

class Migration(migrations.Migration):

    dependencies = [
        ('products', '0024_auto_20221018_1637'),
    ]

    operations = [
    	migrations.AddField(
            model_name='a',
            name='a',
        ),
        migrations.RemoveField(
            model_name='a',
            name='a',
        ),
	]

이미 공유된 마이그레이션 파일은 수정하지 말고 변경사항이 있으면 새 마이그레이션 파일을 만들어야 한다.

0개의 댓글