일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- ORA-00922
- Oracle Express Edition
- 오라클 캐릭터셋 확인
- Oracle 초기 사용자
- ora-01722
- Oracle 18c HR
- 서평단
- Oracle 18c 설치
- Orace 18c
- 무료 오라클 데이터베이스
- Oracle 테이블 띄어쓰기
- oracle 18c
- 비전공자를 위한 데이터베이스 입문
- 윈도우 Oracle
- Oracle 윈도우 설치
- Oracle 18c HR schema
- Oracle 사용자명
- Oracle 사용자명 입력
- 무료 오라클 설치
- Oracle 테이블 대소문자
- ORA-12899
- oracle
- 오라클 캐릭터셋 조회
- 오라클 캐릭터셋 변경
- Today
- Total
The Nirsa Way
[Oracle] ORA-12899: value too large for column 본문
ORA-12899: value too large for column
ORA-12899: "유저명"."테이블명"."컬럼명" 열에 대한 값이 너무 큼 (실제: 5, 최대값: 3)
위의 에러는 컬럼에 정의된 길이보다 큰 문자열을 입력하려할 때 발생하는 에러 입니다.
아래의 커리문처럼 NAME 이라는 컬럼에 NCHAR(3) 로 정의해주었으나, 3글자가 아닌 5글자를 입력하여 정의해준 문자열의 수 보다 많이 입력될 때에 발생 하기 때문에 NCHAR(3)를 NCHAR(5)와 같이 수정해주면 에러가 해결됩니다.
- 수정 전 쿼리 중 문제가 된 부분
"MEMBERNAME" NCHAR(3) NOT NULL ENABLE
- 수정 후
"MEMBERNAME" NCHAR(5) NOT NULL ENABLE
간혹 DB의 데이터 이관 시 UTF-8 과 ASCII 처럼 서로 Byte 수가 틀려 캐릭터셋의 문제로 에러가 발생하기도 합니다. 오라클의 캐릭터셋을 확인 후 변경을 해주어야 합니다.
1. 쿼리를 통해 캐릭터셋 조회
SELECT * FROM NLS_DATABASE_PARAMETERS
WHERE PARAMETER
LIKE '%CHARACTERSET%';
2. 캐릭터셋 변경(UTF-8 -> KO16MSWIN949)
SQL> update props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET'; // value에 변경하려는 문자셋 입력
SQL> update props$ set value$='KO16MSWIN949' where name='NLS_NCHAR_CHARACTERSET'; // value에 변경하려는 문자셋 입력
SQL> commit;
SQL> shutdown immediate
SQL> startup
주의 : 기존 데이터 깨짐 등의 가능성이 있기에 매우 조심히 작업해야 합니다. 기존 데이터를 모두 백업하고 테스트 후에 진행하는것을 권고 드립니다.
(원본 백업 파일은 필수)
'Database > Oracle' 카테고리의 다른 글
[Oracle] ORA-00904: 부적합한 식별자 (0) | 2019.11.13 |
---|---|
[Oracle] 테이블명 대소문자, 띄어쓰기 사용 방법 (1) | 2019.11.12 |
[Oracle] ORA-01722: 수치가 부적합합니다 (0) | 2019.11.12 |
[Oracle] ORA-65096: 공통 사용자 또는 롤 이름이 부적합 합니다. (0) | 2019.11.12 |
[Oracle] Express Edition (XE) 18c 설치 (0) | 2019.11.12 |