서버를 이전하면서 CUBRID DB를 10버전대에서 11.3 버전으로 업그레이드 했다. 사용자, 테이블, 데이터를 모두 이관하고 was를 기동했는데 테이블을 찾지못하는 class not found 오류 발생!
뭐지? 변경한게 없는데..?
버전이 변경됐지만 오류를 처음 봤을땐 그 생각이 안났다.
문제 상황
- 서버를 기동하면서 특정 테이블을 조회하는데 해당 테이블을 찾지 못했다.
해결과정
- 찾지못한 테이블은 datasource 사용자가 소유한 테이블이 아니었다.
- 사용자정보와 테이블을 그대로 이관했는데 왜 이관전에는 문제가 없었을까?
- 이관하면서 CUBRID 버전이 업그레이드 됐다는게 생각났다.
- 버전이 10에서 11.3으로 변경됐는데 어떤 이유에서 지금은 안되는지 찾아봤다.
- 큐브리드11.2문서
Note부분을 확인해보면 11.2 버전부터 테이블 이름 만으로는 다른 사용자가 소유한 테이블에 접근할 수 없다고 한다.- 이 문제를 해결하기위해서 2가지 방법을 생각했다.
- 1). 쿼리가 적혀있는 mapper에서 다른 소유자의 테이블에 대해서 모두 소유자를 적어주기. (ex. MY_TABLE -> PUBLIC.MY_TABLE)
- 2). 해당하는 테이블을 datasource 사용자 계정 소유로 다시 만들고 데이터 이관
- 작업량과 해당하는 테이블을 어떤 계정이 소유해야되는지를 고려했을때 2번 방법으로 진행하기로했다.
- dba계정을 사용할수있어서 기존 테이블 select 권한을 datasource 사용자 계정에게 부여하고 insert into ... select 구문으로 간단하게 이관했다.
회고
- 요즘에는 LLM 기반 서비스나 블로그, 커뮤니티 등을 통해 단순한 정보를 찾는 것은 정말 쉬워졌다. 그런데 정보의 신뢰성을 확인하고 그 근거를 공식 문서나 믿을 수 있는 자료로 다시 검증하는 과정은 여전히 쉽지 않다고 느낀다. 그래서 나는 정보를 찾은 후에도 항상 공식 문서를 한 번 더 확인하는 습관을 가지려고 노력하고 있다.
- 공식 문서를 보다 보면 생각보다 자세하고 꼼꼼하게 정리돼있어서 새삼 놀란다. (그래서 "공식"문서이긴 하겠지만..)처음에는 이렇게 확실한 근거를 찾는 것이 번거롭고 어렵게 느껴질 수 있지만, 앞으로 나만의 노하우가 생기지 않을까 싶다.
- 이전에 Database = Schema 인가? 글을 쓰면서 조금 찾아봐서 그런지 이번 문제는 생각보다 친숙? 한 느낌이 들어서 금방 해결했다.
'데이터베이스' 카테고리의 다른 글
| Database = Schema 인가? (0) | 2025.04.07 |
|---|