본문 바로가기
MySql

MySQL 장고 모델의 큰 정수 필드

by 베이스 공부 2020. 11. 24.
반응형

간단히 말해서, Django 모델에서 BIGINT를 어떻게 지정합니까?

현재 프로젝트에서 Django (0.97-svn 릴리스)를 사용하고 있는데, IntegerField로 정의 된 모든 모델에 모든 정수 필드가 있습니다. DB 백엔드로 SQLite를 사용하는 개발주기 동안 완벽하게 작동했습니다. 그러나 MySQL로 롤오프하자마자 IntegerField 중 하나에 대해 MySQL이 데이터를 자르고 있다는 것을 알았습니다. 스키마를 살펴본 결과 Django의 IntegerField가 MySQL에서 INT (11) 필드로 표시된다는 것을 알았습니다. 당연히 MySQL이 데이터를 자르는 이유는 데이터 길이가 11 자리 이상 이었기 때문입니다. 이 문제를 해결하려면이 경우 BIGINT (20)가되도록 열을 수동으로 업데이트해야했습니다. Django와 MySQL은 그것과 평화롭게 공존합니다. 그러나 BIGINT를 포함하는 모델이있는 애플리케이션을 재설정 할 때마다 Django는 다시 INT (11)로 생성합니다. Django 문서를 보았지만 아무것도 찾지 못했습니다. 내가 간과 한 것이 있습니까?

감사.

 

해결 방법

 

SQLite는 절대 불평하지 않습니다. 그것은 '매니페스트 타이핑'을 사용합니다. 즉, 값에는 열이 아닌 유형이 있습니다. smallint collumn 또는 원하는 모든 것에 큰 텍스트를 저장할 수 있습니다! (64 비트 정수를 사용하는 정수 기본 키를 정의하는 경우 제외).

이는 매우 편리한 기능이지만 다른 엔진으로 배포하려는 경우 SQLite를 개발하는 데 좋지 않은 선택이됩니다.

BIGINT를 사용하려면 사용자 정의 필드 클래스를 만들어야합니다. 안타깝게도이 부분은 Django 1.0에서 변경되었으므로 업데이트 할 때 다시 작성해야합니다.

 

참조 페이지 https://stackoverflow.com/questions/283724

 

 

반응형

댓글