crawling bulk data를 MySQL table에 밀어넣다가 신기한 점을 발견했다.
귀납적 이야기다.
기존에 작성한 Models의 한 필드에서 max_length값이 50이라 그것보다 긴 값이 안 들어갔다.
지훈님이 max_length 제한이 있어도 더 긴 값도 들어갈 수 있다고 한 게 생각나서 영보님께 물어보니 그건 sqlite에서였기에 가능한 거고, MySQL에서는 안되는 거라고 하셨다.
실제로 그 필드의 max_length = 200으로 바꾸고 makemigrations와 migrate를 하니 무리없이 data가 db에 들어갔다. 또한 db에서 explain 명령어를 쳐보니 varchar(200)으로 바뀌어있었다.
하지만 만약 models의 필드 하나 이상을 없애면 어떻게 될까.
그 경우에는 makemigrations와 migrate를 다시 해주어도 django 내에서의 migrate 파일 값만 바뀐 것이고 MySQL 내부의 db에서는 변경 전의 필드가 그대로 있다. 따라서 db를 밀어주고 다시 django와 연동을 해주어야 한다.