Teshi's Think Log

django & mssql 조회시 ID 관련 오류

posted by teshi at 2021-05-04 17:14
categories : Python, 컴퓨터
[42S22] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]열 이름 'id'이(가) 잘못되었습니다. (207) (SQLExecDirectW)

모델 작성을 완료하고 django admin에 모델을 추가하고 조회를 하자 위와 같은 에러가 발생하였다. 참고로 모델 작성은

~ python3 manage.py inspectdb --database [database_name]

위의 명령어로 모델을 작성하였다.

다행히도 접속 문제거나 다른 오류는 아니었다. 그럼 생성된 모델의 예를 보자.

class DBBook(models.Model):
    seq = models.IntegerField(db_column='SEQ')  # Field name made lowercase.
    barcode = models.TextField(db_column='BARCODE')  # Field name made lowercase.

    .
    .
    .
    생략
    .
    .
    .

    class Meta:
        managed = False
        db_table = 'BOOK'

찾아보니 Django에서는 Primary Key 선언을 하지 않으면, 임의로 "ID" 값을 생성한다. 문제는 조회시 mssql에는 ID 라는 컬럼이 없으므로 오류를 뱉어내게 되는 것이었다. 즉, 아래와 같이 Primary Key 선언을 하게되면 문제는 해결된다.

class DBBook(models.Model):
    seq = models.IntegerField(db_column='SEQ', primary_key=True)  # Field name made lowercase.
    barcode = models.TextField(db_column='BARCODE')  # Field name made lowercase.

    .
    .
    .
    생략
    .
    .
    .

    class Meta:
        managed = False
        db_table = 'BOOK'

이걸로 오늘의 삽질도 끝.