Background Image
조회 수 13256 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

MySQL에서 사용하는 스키마 변환시 주의 사항.( CUBRID 2008 R4.0 기준)

 

주의사항 정리

1, MySQL에서 fulltext 인덱스가 있는 경우, 에러를 출력함. CUBRID에서는 fulltext 인덱스 지원하지 않음.

2, CUBRID SET 타입에 대해 Index를 걸 수 없음.

3, MySQL에서 Set 타입 사용 예: MySQL 의 컬럼이 set('News','Sports') 일 때, 1을 넣으면 mysql char 'News' INSERT해 준다. 따라서 cubrid 에서는 varchar로 선언하고, SQL에서 CASE WHEN으로 입력하도록 가이드하였음. (이 방법의 정확성은 계속 확인할 필요가 있음)

4, CREATE /*+ NO_STATS */ INDEX "idx3" ON "office"("type","office_id"); // 생성할 수 없는 인덱스

5, MySQL에서는 a,b,c 컬럼에 대해서 인덱스를 2개 이상 만들 수 있지만, CUBRID는 만들 수 없음.

6, MySQL 에서 "를 사용해서 문자열을 넣지만, CUBRID에서는 '을 사용한다.

7, MySQL DESC 인덱스를 생성할 수 없으므로, 고의로 -를 곱해서 넣은 경우가 있음. 이 경우 원 값을 저장하는 컬럼과 -를 곱한 컬럼을 테이블에 저장하고 있음. 따라서 CUBRID 가져올 때 인덱스 필요성 유무를 판단한 다음, 컬럼과 인덱스를 만들 때 주의해야 함

8, CUBRID blob 타입 컬럼은 NOT NULL로 지정 못 함.

9, float(5,1)--> numeric(5,1)의 형식으로 변환

10, CUBRID에서는 "timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP" 의 컬럼 정의가 불가능함. on update ~ 를 지워야 함.

 

질의 변환 예

1, CUBRID JOIN을 이용한 UPDATE 불가: 변환할 수 없는 경우도 있음. 아래의 경우는 패턴이 단순하여 변환이 가능하였음.

변경 전

변경 후

UPDATE video_info V,
(SELECT DISTINCT service_info_id
FROM service_info
WHERE post_key =?
AND service_id = ?) S
SET V.private_flag = #privateStatus#

WHERE V.service_info_id = S.service_info_id

 

 

 

UPDATE video_info V

SET V.private_flag = #privateStatus#
WHERE V.service_info_id in (SELECT DISTINCT service_info_id
FROM service_info
WHERE post_key =?
AND service_id =?)

 

 

 

UPDATE video_info_master vim, video_info vi

SET vim.play_count = vim.play_count + 1
WHERE
vi.video_master_id = vim.video_master_id
AND vi.video_id =?
AND vi.private_flag = 10

UPDATE video_info_master vim
SET vim.play_count = vim.play_count + 1
WHERE
vim.video_master_id in (SELECT vi.video_master_id
FROM video_info vi
WHERE vi.video_id =?

AND vi.private_flag = 10 )

 

마이그레이션시 고려할 부분

1, 소스 테이블의 NOT NULL column NULL 들어 있는 경우가 있을 수 있음. 소스 테이블의 최초 스키마는 Nullable column이었거나, 다른 문제로 유입되었을 것임.

2, mysqldump를 사용해서 마이그레이션할 때, --tab으로 데이터를 뽑을 때는 mysqld를 실행한 계정과 같은 계정으로 뽑아내야 함.

 

마이그레이션 완료후 필요한 작업

1, MySQL AUTO_INCREMENT 컬럼의 최대값보다 충분히 큰 값으로 CUBRID의 시리얼 값을 변경해주어야 함. 그렇지 않으면 Insert 질의 실행할 때 Unique Violation이 날 수 있음. 작업 지시서에 꼭 넣어야 함.

 


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
199 질의작성 join update 처리방법입니다.(연관성 있는 테이블을 조인하여 처리하는 UPDATE 구문) 권호일 2012.11.30 20392
198 마이그레이션 MySQL+XE를 CUBRID+XE로 운영하기 – mysqldump파일과 CMT사용 file cubebridge 2012.11.13 23071
197 CUBRID 매니저 CUBRID와 CUBRID Web Manager설치, 그리고 XE의설치 및 연동까지 file cubebridge 2012.11.13 18099
196 응용개발 CUBRID-PHP-Driver 연동가이드 file cubebridge 2012.11.13 17136
195 마이그레이션 MySQL에서 CUBRID로 갈아탈 때 알아야 할 것 cubebridge 2012.11.13 22615
194 응용개발 오라클 to CUBRID로 마이그레이션 수행 시 주의사항 cubebridge 2012.11.12 16642
193 마이그레이션 오라클의 order by 시 first와 last 대체 사용법 file cubebridge 2012.11.12 20576
192 운영관리 CUBRID에서의 BLOB/CLOB 사용시 백업 및 복구에 대한 주의 점 cubebridge 2012.09.18 33157
191 기타 전자정부 표준프레임워크 CUBRID 사용 방법 문의 참조 cubebridge 2012.09.17 20600
190 운영관리 Windows 서버에서 [장치에 쓰기 캐싱 사용] 설정/해제에 따른 성능 차이 이용미 2012.06.30 20231
189 운영관리 데이터 입력 중 디스크 공간 부족 오류가 발생하였을 때, 복구 방법 이용미 2012.06.30 14331
188 질의작성 게시판 응용 중 조회수로 정렬하는 경우 인덱스 생성 방법 1 손승일 2012.06.23 13905
187 질의작성 문자(char, varchar)로 설계한 날짜데이타 검증하기 권호일 2012.04.27 17829
186 CUBRID 매니저 CUBRIDManager의 접속 정보 이관 file cubebridge 2012.04.14 12383
185 마이그레이션 CUBRID Migration Tookit 8.4.1 file cubebridge 2012.04.14 11081
184 운영관리 CUBRID 에서의 사용자 권한관리 방법 file cubebridge 2012.04.14 23651
183 마이그레이션 데이터베이스 마이그레이션(unloaddb & loaddb) 의 효과적인 수행방법 file cubebridge 2012.04.14 24548
182 질의작성 세부내역과 소계를 한개의 쿼리문장으로 수행하는 SQL 권호일 2012.03.31 14092
181 질의작성 한건의 데이타를 여러건으로 조회하는 쿼리입니다. 권호일 2012.03.30 9419
180 질의작성 여러건의 코드명을 한건으로 조회하는 쿼리입니다. 1 권호일 2012.03.30 10755
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales