personal project/에러 해결
데이터베이스 charset 값으로 인한 문제
choi-dev
2024. 3. 3. 04:06
SQL Error: 1366, SQLState: 22007
incorrect string value: '\xec\xb5\x9c\xec\x8a\xb9...
JPA를 통해서 데이터베이스 유저 테이블을 생성하는 도중 해당 에러코드를 뱉어냈다. 부가적으로 다음과 같은 것을 확인할 수 있는데 이는 인코딩 과정에 저장이 문제 생겼다는 뜻이다. 실제로도 여기엔 없지만 에러를 가르키는 곳이 'name'이었고 name에는 한글이 들어가고 있었다.
일일이 바꿔줬다
처음엔 방법을 몰라서 일일이 컬럼 하나하나 수정을 했다. 한 번도 이런 일이 없었다 생각했는데 다시 생각해보니 여태까지 DB를 직접 CREATE했었기에 볼 수 없었던 것이다.
charset 값을 ALTER한다.
JPA를 통해서 생성한다면 이 자체에서는 어떻게 할 수 있는 방법이 없는 것 같다. mybatis나 queryDSL이었으면 charset 값을 수정해줄 수 있었을 것 같은데 이번엔 JPA 자체로만 하다보니 수정할 수가 없었다.
alter table user default character set = utf8;
alter table user convert to charset utf8;
테이블이 생성될 때마다 로컬 DB에 접근해서 ALTER 해줘야한다. 참고로 이건 로컬에서 MariaDB나 MySQL을 사용할 때이고 RDS의 경우는 따로 검색해보아야 할 것이다.