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
번호 분류 제목 글쓴이 날짜 조회 수
119 응용개발 ODBC 드라이버를 이용한 Prepare 사용하기. seongjoon 2009.06.16 19590
118 마이그레이션 MySQL의 limit 명령어 처리 1 admin 2008.11.21 32685
117 응용개발 MySQL의 Blob타입을 CUBRID로 변환하기 cubebridge 2009.11.18 18856
» 마이그레이션 MySQL에서 사용하는 스키마 변환시 주의 사항 정만영 2012.03.02 13256
115 마이그레이션 MySQL에서 CUBRID로 갈아탈 때 알아야 할 것 cubebridge 2012.11.13 22616
114 마이그레이션 MySQL+XE를 CUBRID+XE로 운영하기 – mysqldump파일과 CMT사용 file cubebridge 2012.11.13 23071
113 마이그레이션 MySQL 테이블 크기 조사하기-공유 주현 2015.12.31 6203
112 CUBRID 매니저 MS949 charset을 CM에서 선택할 수 없는 현상 조치방법 cubebridge 2010.05.17 20543
111 질의작성 MERGE INTO 사용 예제 ( INSERT, UPDATE문을 1개의 쿼리로 실행 ) 권호일 2015.05.01 21252
110 질의작성 LIKE 검색에서 INDEX_SCAN사용 하기 file janus 2009.04.17 21809
109 CUBRID 매니저 Java SP사용시 JNI_CreateJavaVM 에러메시지 해결 방법 file seongjoon 2009.07.15 32043
108 응용개발 Java Data Type의 CUBRID Data Type으로의 변경 Tip cubebridge 2009.06.16 18032
107 응용개발 JDBC 커넥션 스트링에 UTF-8 명시하는법 Prototype 2009.07.03 19017
106 응용개발 JDBC 사용시 SQL 로깅 - p6spy 사용 1 웁쓰 2009.07.01 35999
105 기타 JBoss 사용 시 statement pooling 설정 손승일 2016.12.16 2924
104 질의작성 JAVA_SP를 이용해서 정규표현식을 이용해서 치환을 하자. file 성진 2017.10.10 1325
103 응용개발 JAVA SP를 통해 다른 데이터베이스 연결하는 경우 잊지 말자. 손승일 2009.12.16 17975
102 응용개발 JAVA SP 사용 시 로그 처리 방법 손승일 2015.06.03 8574
101 운영관리 Invalid XASL tree node content 에러 손승일 2016.04.26 4477
100 질의작성 Integer 컬럼의 결과에 + or – 연산을 할 때 주의해야 할 점 웁쓰 2009.12.31 13493
Board Pagination Prev 1 ... 4 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