Django 마이그레이션에서 GIN 인덱스를 생성하는 방법
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
고맙습니다...
😇 자세히 보기 -
Reference
이 문제에 관하여(Django 마이그레이션에서 GIN 인덱스를 생성하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/siumhossain/how-to-create-gin-index-in-django-migration-django-search-1310텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)