오라클 오류 총정리: ORA-00904, ORA-00942, ORA-01722

반응형

안녕하세요!
오늘은 오라클 개발/운영하면서 진짜 자주 만나는 오류 3개를 한번에 정리해봤어요.

ORA-00904: "COLUMN_NAME": invalid identifier
ORA-00942: table or view does not exist
ORA-01722: invalid number

아마 다들 한 번쯤은 봤을 거예요
왜 나는건지, 어떻게 고치는지 깔끔하게 설명해볼게요.

ORA-00904


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 작성할 때 항상 오타, 대소문자, 타입 체크하는 습관 들이면
이런 오류는 웬만하면 안 만날 수 있어요

오늘도 에러 극복하고, 즐코하세요! 🚀

반응형