저는 PHP 응용 프로그램의 MySQL 데이터베이스를 새로운 Django 프로젝트에 통합하고 있습니다. Inspectdb이 제대로 작동 했으므로 몇 가지 필드를 ForeignKeys로 변경해야했습니다. 현재 모든 읽기 및 편집 현재 데이터가 훌륭하게 작동하고 있습니다.Django - 레거시 db 및 'id'필드의 문제
문제는 새로운 항목을 만들려고 할 때 오류가 발생합니다. "Field 'id' doesn't have a default value"
입니다. 추적은 form.save()
호출에서 시작하며 예외는 MySQL 커서에서 발생합니다. 대부분의 경우 열이 id
라는 있지만, 하나의 케이스에 명명 된 값입니다
class ModelOne(models.Model): #normal "id" named pk
id = models.AutoField(primary_key=True, db_column='id', default=None)
other_fields = ...
class ModelTwo(models.Model): #specific pk
named_pk = models.AutoField(primary_key=True, db_column='named_pk',
default=None)
other_fields = ...
, 내가 올바른 양식을 게시 할 때, 나는 오류,하지만 내 데이터 목록으로 돌아 가면 , 새 항목이 나타납니다! 그리고 셸에서 최신 id
값을 확인한 후에 올바르게 증가하고 있음을 알 수 있습니다.
그러나 ModelOne (단지 id
)의 경우 오류가 계속 나타나며 pk가 2147483647 (최대)가되고 중복 ID로 인해 이후 저장에 실패합니다. (다음으로 높은 pk는 62158입니다.)
이 ID 필드가 올바르게 작동하려면 무엇을해야합니까?
업데이트 : 아직 행운을 고치지 않았습니다. 데이터를 덤핑하고 새로운 장고 내장 테이블로 가져 오는 것에 대해 생각해보십시오. 이 문제에 대한 해결책을 찾고 있습니다.
갱신 2 : DB 쉘에서 정보
ModelOne :
+-------------+--------------+-------+------+---------+-----------------+
| Field | Type | Null | Key | Default | Extra |
| id | int(11) | NO | PRI | NULL | auto_increment |
ModelTwo :
+-------------+--------------+-------+------+---------+-----------------+
| Field | Type | Null | Key | Default | Extra |
| named_pk | int(11) | NO | PRI | NULL | auto_increment |
을 = 없음 '? –
@Daniel Roseman - 똑같은 것. 오류를 나타내는 것처럼 보였던 것을 직접 처리하기 위해 추가했습니다. –