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
번호 분류 제목 글쓴이 날짜 조회 수
99 질의작성 Integer 컬럼의 결과에 + or – 연산을 할 때 주의해야 할 점 웁쓰 2009.12.31 13493
98 질의작성 오라클 바이딩 변수와 큐브리드 인터프리터 변수를 사용한 경로 표현식 정만영 2009.06.09 13484
97 질의작성 function based index 대체 방법 남재우 2010.07.01 13420
96 운영관리 cubrid.conf파일 적용의 우선 순위와 HOST적용 우선 순위 cubebridge 2009.11.14 13370
95 응용개발 CUBRID에서 SQL힌트와 주석을 쓸 때 순서. cubebridge 2012.01.11 13328
94 질의작성 CUBRID 2008에서 ' 사용하기. file seongjoon 2009.06.16 13315
93 질의작성 CUBRID 2008에서의 class 정보를 확인하는 sql 쿼리문. seongjoon 2009.06.30 13288
» 마이그레이션 MySQL에서 사용하는 스키마 변환시 주의 사항 정만영 2012.03.02 13256
91 운영관리 csql 인터프리터를 통해 쿼리 수행시간을 확인하는 방법. file seongjoon 2009.06.30 13196
90 운영관리 TIME_TO_KILL과 SESSION_TIMEOUT에 대한 정리 cubebridge 2009.05.27 13191
89 운영관리 insert 질의로 16K 이상 데이터 입력 시 오류 문제와 해결방법 정만영 2010.07.01 13184
88 CUBRID 매니저 질의편집기 사용시 주의할 점 남재우 2010.01.01 13112
87 CUBRID 매니저 한 개 PC에서 CUBRID7.3과 CUBRID2008R1.4 & R2.0 매니저 사용 방법 1 정만영 2009.12.12 13054
86 운영관리 cubrid_service.exe 가 CPU 를 지속적으로 일정부분 점유하는 경우 남재우 2010.01.01 13030
85 기타 EVALUATE method 수행시 주의해야 할 점 웁쓰 2009.12.31 12875
84 운영관리 자동 백업, 매니져 관리자 암호 등의 설정에 대하여 CUBRID 배포판을 만들어 동일하게 배포하고자 할때 남재우 2009.12.16 12829
83 운영관리 큐브리드 복제 구성 시 마스터 데이터베이스 백업 주의사항 정만영 2010.02.11 12591
82 운영관리 CUBRID에서의 출력 메시지 한글로 변경 방법. file seongjoon 2010.03.01 12441
81 운영관리 CUBRID 4.0 서버 재부팅 후 CUBRID Tray 기동문제 해결방법 정만영 2011.08.31 12420
80 운영관리 CUBRID에서 데이터가 있는 칼럼의 도메인 변경 시 조치방법 cubebridge 2009.11.16 12409
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 Next
/ 14

Contact Cubrid

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