반응형
안녕하세요!
오늘은 오라클 개발/운영하면서 진짜 자주 만나는 오류 3개를 한번에 정리해봤어요.
ORA-00904: "COLUMN_NAME": invalid identifier
ORA-00942: table or view does not exist
ORA-01722: invalid number
아마 다들 한 번쯤은 봤을 거예요
왜 나는건지, 어떻게 고치는지 깔끔하게 설명해볼게요.
1. ORA-00904: "COLUMN_NAME": invalid identifier
뜻:
- SQL문 안에 적은 컬럼 이름이 잘못됐다는 에러.
주요 원인:
- 컬럼명이 틀렸거나(오타, 대소문자 틀림)
- 테이블에 없는 컬럼을 참조했거나
- 컬럼명이 "" 따옴표로 잘못 감싸진 경우
해결 방법:
- 컬럼 이름을 정확하게 다시 확인!
- SQL Developer 같은 툴로 테이블 구조 먼저 확인하고 쓰세요.
- 특히 대소문자 조심해야 함.
(오라클은 기본적으로 컬럼명을 대문자로 저장합니다.)
예시:
SELECT usernmae FROM users; -- 오타 usernmae
-- 수정
SELECT username FROM users;
2. ORA-00942: table or view does not exist
뜻:
- 지정한 테이블이나 뷰가 존재하지 않는다는 에러.
주요 원인:
- 테이블 이름 오타
- 권한이 없는 테이블 접근
- 다른 스키마(table owner)를 지정 안 했을 때
해결 방법:
- 테이블명이 정확한지 다시 확인!
- 내가 로그인한 계정에 그 테이블 접근 권한이 있는지 체크.
- 다른 계정(table owner) 테이블 접근할 때는
OWNER.TABLE_NAME
형태로 써야 해요.
예시:
SELECT * FROM employees; -- 존재하지 않는 테이블명
-- 수정
SELECT * FROM hr.employees; -- HR 스키마 명시
3. ORA-01722: invalid number
뜻:
- 숫자로 변환할 수 없는 값을 숫자로 바꾸려 할 때 나는 에러.
주요 원인:
- varchar 컬럼에서 숫자 변환을 시도했는데 문자열이 숫자가 아닐 때
- 조건절 WHERE에서 타입이 안 맞을 때
해결 방법:
- to_number() 쓰기 전에 데이터가 숫자인지 먼저 체크!
- 문자열 안에 문자가 섞여있으면 오류남.
예시:
SELECT * FROM products WHERE price = 'abc'; -- 'abc'는 숫자가 아님
-- 수정
SELECT * FROM products WHERE TO_NUMBER(price) = 100;
또는, 애초에 price 컬럼이 숫자 타입이어야 안전함.
✍️ 마무리
요약하면!
- ORA-00904 → 컬럼 이름 틀렸거나 존재 안함
- ORA-00942 → 테이블/뷰 존재 안함 또는 권한 없음
- ORA-01722 → 숫자로 변환할 수 없는 데이터 문제
SQL 작성할 때 항상 오타, 대소문자, 타입 체크하는 습관 들이면
이런 오류는 웬만하면 안 만날 수 있어요
오늘도 에러 극복하고, 즐코하세요! 🚀
반응형