Django 마이그레이션에서 GIN 인덱스를 생성하는 방법

models.py 파일 가져오기에서

from django.contrib.postgres.indexes import GinIndex


Meta 클래스에서 모델 필드로 색인을 생성하십시오.

    class Meta:
        indexes = [
            GinIndex(name='NewGinIndex',fields=['title','keywords','shortDescription','details'])
        ]


그런 다음 python manage.py makemigrations를 실행하고 python manage.py migrate를 실행하면 다음과 같은 오류가 발생합니다.

data type character varying has no default operator class for access method "gin"
HINT: You must specify an operator class for the index or define a default operator class for the data type.



그런 다음 앱 -> 마이그레이션 -> _modelName_giniIndexname.py 파일로 이동합니다.

그런 다음 <number>_modelName_giniIndexname.py 파일 가져오기에서

from django.contrib.postgres.operations import BtreeGinExtension


또한 operations 목록에 추가 -

BtreeGinExtension(),


그런 다음 마이그레이션을 실행할 수 있습니다. 아마도 당신은 슈퍼 유저 문제와 같은 또 다른 오류를 얻게 될 것입니다. 이 문제를 해결하려면
다음을 통해 현재 사용자가 psql에 로그인 -

sudo -u postgres psql


그런 다음 ->

postgres-# alter role <user_name> superuser;


이 사용자는 데이터베이스 구성 사용자 프로필에 있어야 합니다.


그런 다음 ->

postgres-# CREATE EXTENSION btree_gin;


If you want alter super user permission by after login with current user in psql -



postgres-# alter role <user_name> nosuperuser;


-에 의해 데이터베이스에서 종료

\q 


그럼 python manage.py migrate
고맙습니다...

😇 자세히 보기 -







  • 좋은 웹페이지 즐겨찾기