Computer Science/Troubleshooting

[Django, MySQL] Migration은 성공했지만 table이 없다.

_혀니 2022. 8. 24. 13:50
728x90
반응형

장고에서 마이그레이션이 됐다는 메시지는 뜨는데 테이블을 생성하지 않을 때

분명 마이그레이션은 됐다고 하는데, 막상 db를 확인해보면 테이블이 없다.

models.py에서, class Meta: 부분을 주목해야 한다.
managed 속성이 false로 되어있으면 테이블을 생성하지 않는다.

models.py

class Playlist(models.Model):
    user = models.ForeignKey('account.User', models.DO_NOTHING, blank=True, null=True)
    name = models.CharField(max_length=50, blank=True, null=True)
    tag = models.CharField(max_length=50, blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'playlist'

프로젝트에서 구현한 코드 일부이다.

managed=False로 되어있는 것을 볼 수 있다.

    class Meta:
        managed = True
        db_table = 'playlist'

이런 식으로 변경해야 한다.

왜 이런 코드가 있을까?

나는 이런 속성을 부여한 적이 없는데? 라고 생각했으나

mysql의 db를 models.py에 끌어오는

python manage.py inspectdb > app/models.py 를 사용하면

자동으로 managed 속성이 false로 들어가게 된다.

인식한 db를 다시 migrate하지 않기 위해 부여한 것으로 보이지만,

오히려 이 속성 때문에

다른 컴퓨터에서 실행할 때 마이그레이션이 진행되지 않는 것이다.

728x90
반응형