XX000: template database "template1" has a collation version mismatch

XX000: template database "template1" has a collation version mismatch

Npgsql + EF Core 사용 중 발생한 문제

collation version mismatch

며칠 전부터 Docker 관련 문제로 인해 백업하고 복구하는 과정에서 발생한 문제이다. 아마도 postgres 이미지의 버전업 때문에 발생한 문제로 보인다.

이 문제는 Update-Database (dotnet ef database update) 실행 중 발생했다. 추측하기로 프로젝트에 저장된 마이그레이션 정보에 있는 collcation version과 실제로 마이그레이트 되고 있는 DB의 collation version이 달라서 발생하는 문제 같다.

The template database was created using collation version 2.31, but the operating system provides version 2.36.

그렇다면 collation version을 최신화 해주면 된다.

Refresh Collation Version

PostgreSQL에서 특정 DB의 collation version을 최신화하려면 다음과 같은 쿼리를 날리면 된다. 여기선 문제가 발생한 템플릿 DB인 template1 DB를 대상으로 하겠다.

ALTER DATABASE template1 REFRESH COLLATION VERSION;

잘 적용되었는지 확인해보자.

SELECT datcollversion FROM pg_database WHERE datname = 'template1';
datcollversion
2.36

이제 다시 DB를 업데이트해보면 정상적으로 작동하는 것을 확인할 수 있다.

댓글

이 블로그의 인기 게시물

C# 남아도는 메모리에도 불구하고 OutOfMemoryException이 발생한다면?

MySQL 데이터 타입과 Java 데이터 타입 비교/매칭

테일즈위버 OST 전곡 모음