유일성(unique) 제약 조건이 위배
Uniqe Key , Primary Key 와 같은 테이블에 하나만 들어가야 하는 값들 중 하나가 해당 키에 데이터가 들어가있는데 중복해서 INSERT를 사용하면 발생하는 에러
기본키에 해당하는 이미 존재하는 데이터와 중복을 피해서 INSERT 및 UPDATE
ex.
-- ORA-00001 오류 발생
INSERT INTO PRODUCT VALUES(1001, 'USER01');
-- SQL문 수정
INSERT INTO PRODUCT VALUES(1004, 'USER01');
해당 컬럼 제약조건 삭제
ex.
ALTER TABLE AB DROP CONSTRAINT SYS_C007143(제약조건 이름);
해당 열이 테이블에 존재하는지 확인
정의된 열 이름의 대소문자를 확인
작은 따옴표(')로 값을 묶으면 값으로 취급되지만 큰 따옴표(")로 값을 묶으면 객체 이름으로 처리되는 점을 확인
열 이름 앞에 숫자 혹은 기호가 사용되는 지 확인
예약어를 사용하고 있는 지 확인
INSERT 할 때 NOT NULL 또는 PRIMARY KEY가 지정되어있는 컬럼에 NULL이 들어가서 생기는 에러
데이터를 insert 하기 전에 NOT NULL 과 PRIMARY KEY 제약조건이 걸려있는 컬럼을 확인하여 해당 컬럼들에는 데이터를 필수적으로 입력
ex.
-- 제약설정 조회
SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'AB'(테이블명);
기존 객체가 이미 동일한 이름으로 생성되어 있는 경우
객체 조회 후 해당 객체명으로 이미 생성된게 있으면 삭제 후 새로 생성
또는, 테이블 이름 변경
-- 테이블 객체 조회
SELECT OBJECT_NAME,OBJECT_TYPE
FROM USER_OBJECTS
WHERE OBJECT_NAME LIKE '%테이블명%';
-- 테이블(객체)명 삭제
DROP TABLE 테이블명;
-- 테이블(객체)명 변경
ALTER ALTER 기존 테이블명 RENAME TO 변경 테이블명;
사용자에게 해당 작업을 수행할 권한이 없는 경우
사용자에게 권한 부여
-- 사용자에게 부여되어있는 권한(ROLE) 조회
SELECT * FROM USER_ROLE_PRIVS;
ex. connect(접속)권한이 없을 경우
GRANT CONNECT TO 계정명;
ex. 객체 생성 권한이 없을 경우
GRANT RESOURCE TO 계정명;
ex. VIEW 생성 권한이 없을 경우
GRANT CREATE VIEW TO 계정명;
테이블 또는 뷰가 존재하지 않을 때 발생
-- 테이블 목록 조회(접속한 계정)
-- 방법 1
SELECT * FROM tabs;
-- 방법 2
SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE = 'TABLE';
-- 방법 3
SELECT * FROM USER_TABLES;
-- 뷰 목록 조회
SELECT * FROM USER_VIEWS;
--
-- 테이블 생성
ex.
CREATE TABLE 테이블명
(
칼럼명1 데이터타입
칼럼명2 데이터타입
);
-- 뷰 생성
ex.
CREATE VEIW 테이블명
AS 칼럼명1, 칼럼명2, ... FROM 원본 테이블명;
SELECT와 FROM 사이 SQL문법 오류 발생
오타, 세미콜론(;), 컴마(,), 띄어쓰기 등 재확인
함수를 사용할 때 전달되는 인자의 갯수가 선언된 것과 맞지 않아서 주로 생김
쿼리문에서 함수 사용시 인자 갯수가 잘 세팅되어 있는지, 쿼리문에 오타 및 괄호 갯수는 잘 맞는지 확인
사용자명이나 비밀번호나 오타가 없는지 다시 한번 확인
데이터 딕셔너리 뷰에서 계정 조회 후 계정 생성
-- 계정 조회
SELECT * FROM DBA_USERS
WHERE USERNAME = 'USERNAME';
SELECT * FROM ALL_USERS
WHERE USERNAME = 'USERNAME';
SELECT * FROM USER_USERS
WHERE USERNAME = 'USERNAME';
-- 계정 생성
CREATE USER 계정명 IDENTIFIED BY 비밀번호;
사용자명/비밀번호 대소문자 설정 여부
캡스락이 눌러져있지 않은지 확인
TRUNC, MOD, ROUND, CEIL 등의 함수를 사용할 때 문자를 넣은 곳이 있는지 확인
조건식에서 문자와 숫자를 비교하는지 확인
컬럼에 데이터 자체가 올바른지 확인
테이블명 부적합
테이블명을 INSERT문에 적어주지 않아서 발생
테이블명을 쓰고 올바르게 INSERT문 작성
삽입하려는 값들과 테이블의 컬럼수가 일치하지 않음
INSERT INTO 테이블명(컬럼1, 컬럼2) VALUES(컬럼1에 들어갈 값, 컬럼2에 들어갈 값)
INSERT INTO 테이블명 VALUES(테이블 컬럼의 수에 맞게 데이터 삽입)
삽입하려는 데이터의 개수가 지정한 컬럼의 개수보다 많을 때 발생
컬럼의 개수와 삽입하려는 개수를 맞춰주면 됨
대부분 쿼리 구문 끝에 세미콜론이 있는 경유
작성한 SQL 쿼리에 세미콜론(;), 콤마(,), 마침표(.)등 문자부호를 한번 더 확인