뭐 사실 이번거는 간단한 문제인데 한 번 공유할 겸 적어본다~
문제를 처음 발견한건 super-admin 페이지에 이메일 도메인 관리 페이지를 구현하면서였다.
위 사진은 이름 기준으로 order by를 걸어서 조회하는 부분인데 order by가 제대로 걸려있지 않았다.
그래서 이유를 찾아보니… postgresql의 기본 datcollate값이 en_US.UTF8
로 설정되어 있어 한글을 제대로 인식하지 못해서 생긴 문제였다.
해당 문제는 아래와 같은 SQL 문으로 쉽게 해결 가능하다고 한다.
UPDATE PG_DATABASE
SET DATCOLLATE = 'ko_KR.utf8'
WHERE DATNAME = '{데이터베이스 이름}';
그렇기에 liquibase에서 datcollate 값을 바꿀 수 있는 문법을 지원하는지 찾아보았다.
다만 liquibase에서 해당 문법을 지원하지는 않았지만 raw sql문을 실행시킬 수 있게 해주어서 아래와 같은 changelog 파일을 추가했다.
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>"
xmlns="<http://www.liquibase.org/xml/ns/dbchangelog>"
xsi:schemaLocation="<http://www.liquibase.org/xml/ns/dbchangelog>
<http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.24.xsd>">
<changeSet author="ji-inpark" id="1742283846805-1">
<sql dbms="postgresql"
endDelimiter="\\nGO"
splitStatements="true"
stripComments="true">UPDATE PG_DATABASE
SET DATCOLLATE = 'ko_KR.utf8'
WHERE DATNAME = 'kio-school-database';
</sql>
</changeSet>
</databaseChangeLog>
해당 파일로 db에 잘 적용이 되었고, 아래와 같이 보이게 되었다. (아래는 로컬이라서 데이터들이 난장판이다ㅎㅎ)
이번 기회로 앞으로 db 기본 설정을 어떻게해야할지 생각해볼 수 있었던 것 같다.