MySQL
MySQL#
테이블 칼럼의 데이터 타입이 크기가 1 또는 2인 VARCHAR나 CHAR일 때, 크기가 1인 데이터는 null로 이관된다.#
원인#
크기가 1인 데이터를 가져올 때 MySQL JDBC 드라이버가 null 값을 반환하는 것을 확인하였다면, MySQL JDBC 드라이버 문제로 판단된다.
해결 방법#
드라이버를 5.0.8 버전의 MySQL Connector/J로 교체해야 한다. 재시도에서도 같은 현상이 발생하면, 아래의 과정을 통해 Batch Execution을 취소한다.
- 프로젝트를 연다.
- 메뉴 Migration → Migration Options를 클릭한다.
- Batch Execution의 값을 No로 변경한다.
데이터 타입 CHAR, VARCHAR가 NCHAR, NVARCHAR로 변경된다.#
원인#
MySQL은 데이터 타입 NCHAR, NVARCHAR을 지원하지 않는다. 대신 CHAR, VARCHAR 칼럼의 속성으로 국가별 문자 집합(national character set)을 지정할 수 있다. 마이그레이션 센터는 이 국가별 문자 집합이 지정된 CHAR, VARCHAR 칼럼에 한해서 NCHAR, NVARCHAR로 변환한다.
해결 방법#
해당 현상은 정상적인 동작이다.
기본 DataType Map에서 MySQL의 NVARCHAR가 Altibase의 NVARCHAR(10666)으로 매핑되어있다.
MySQL과 Altibase 간 국가별 문자 집합의 글자 당 바이트 수가 서로 다를 경우, 이에 대한 고려 없이 이관을 수행하면 제한 바이트 수 초과로 스키마를 생성하지 못하는 상황이 발생할 수도 있다. 이러한 상황을 피하기 위해, 마이그레이션 센터는 기본적으로 NVARCHAR의 크기를 고정하였다.
만약 해당 테이블 칼럼의 데이터 크기가 크지 않다면, 아래와 같은 절차를 수행하여 원본 데이터베이스의 크기를 그대로 이관할 수 있다.
Reconcile 단계: Data Type Mapping에서 NVARCHAR 행 클릭
Change 버튼을 클릭
Destination DB Data Type으로 NVARCHAR를 선택하고 Precision을 빈칸으로 둔 뒤, 저장한다.