2011-03-01 4 views
1

시나리오 : MySql 및 Oracle의 데이터베이스. 둘 다 동일한 테이블과 동일한 열을가집니다. 테이블 중 하나에 'FullName'열이 있습니다.MySql 및 Oracle의 유니 코드 문자 저장

사용되는 Oracle 데이터 유형은 VarChar2 (64)입니다. 사용되는 MySql 데이터 유형은 VarChar (64)입니다.

유니 코드 문자 지원 UTF8이 기본 문자 집합으로 사용됩니다.

오라클의 "값이 너무 커서 열이 너무 큽니다"라는 오류가 발생합니다. 여기서 MySql은 제대로 작동합니다.

나는이 두 가지 dbases의 차이점을 알고 싶습니다.

주 : 일본어의 경우 UTF8 인코딩의 문자는 3 바이트를 사용합니다.

미리 감사드립니다. MYSQL에서 VARCHAR (64)이 의미하기 때문에

파반

+2

'VARCHAR2 (64 BYTE)'또는'VARCHAR2 (64 CHAR) '로 선언 열인가? –

+1

TABLE "DUMMYUSER" 생성 (. \t을 \t \t \t "FULL_NAME"VARCHAR2 (64) \t \t \t \t .....); –

+0

이 질문을 한 Jeffery Kemp에게 감사드립니다. 문제를 바라 보는 완전히 새로운 시각을주었습니다. 해결책을 찾았습니다. –

답변

2

는 MYSQL에서 작업 된 이유는 64 자이고 기본 문자는 UTF8입니다.

오라클의 기본 문자 집합은 UTF8이지만 오라클의 경우 작동하지 않았습니다. 이유는 VarChar2 (64)이며 64 바이트를 의미합니다. For the japanese UTF8 인코딩의 문자는 단일 문자에 3 바이트를 사용합니다. 따라서 "열에 값이 너무 큽니다"라는 오류가 발생합니다.

다음 링크의 솔루션에 대한 David Sykes에게 감사드립니다. 오라클

Difference between BYTE and CHAR in column datatypes