* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 32bit | |
9.2. | |
[도움말]-[버전정보] 확인 | |
VB6 , OleDB (9.2 32bit), ODBC(9.2 32bit) |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
8.1.4 / 8.3.1 사용중인데
disk full 로 인한 - 실제는 disk full이 아닌데 - Invaild Index 오류가 빈번한 관계로 이번에 9.2로 업그레이드를 테스트 했습니다.
기존 cubrid 사용시 환경 매개 변수에 대해서 아무런 수정을 전혀 하지 않고 기본값을 사용을 했습니다. 케릭터셋 값 조차도.
또한 vb 어플리캐이션에서도 어떠한 한글 인코등 처리를 하지 않았습니다.
이번 업그레이드시 create db를 할 경우 로캘을 지정해야 한다고 해서 기존 cubrid db에서 character set이 어떻게 지정되어 있는지 확인해 보니 MS949로 표시가 되어 있었습니다.
도움말에서 9.2 CREATEDB 에서 캐릭터셋 지정하는 곳에 MS949가 없어서 거기에 표시된 CHARACTER SET을 전부 테스트 해봤습니다.
CUBRID MANAGER에서는 한글이 정상으로 보이는데(ms949 / utf8 모두한글 안깨지고 보임) 기존 프로그램(VB로 만들어진) 에서는
한글이 깨져서 나옵니다.
게시판에서 찾아보니 cubrid에서는 인코딩을 별도로 진행하지 않는다고 설명을 봤지만...
1. 마찬가지로 별도의 인코딩 작업없이 사용하던 프로그램이 db업글 후 한글이 깨지는 문제가 왜 발생하는 것일까요?????
2. MS949는 케릭터셋을 어떤걸 지정해야 하나요???
3. 가장 중요한것...한글이 안깨질려면 어떻게 해야 할까요?
참고로 VB에서 사용중인 ConnectString 입니다.
connString = "Provider = CUBRIDProvider;" & _
"Data Source = " & DbName & ";" & _
"Location = " & DbSvrName & ";" & _
"User ID = " & Uid & ";" & _
"Password =" & Pswd & ";" & _
"Port = 30000;Fetch Size = 100"
안녕하세요. 답변이 늦어 죄송합니다.
우선, CUBRID20008에서 CUBRID 9버전대로 업그레이드 시 가장 주의하셔야 할 점이 문자셋 입니다.
아래와 같이 답변을 작성하였으니 확인 부탁 드립니다.
1. 문자셋이 기존과 맞지 않는 경우, MANAGER에서 정상적으로 보인다고 하더라도 문자열 관련 함수 사용 시 해당 문자는 깨질 수 있습니다. Manager에서 정상적으로 보이는 이유는 아시다 시피 CUBRID 자체에서 문자셋 관련 변환 작업을 하지 않기 때문입니다. 업그레이드 시, CHARACTER SET 모두 테스트를 해보셨다고 하셨는데, 모든 경우에 응용에서 문자셋이 깨졌는지요?
2. MS949의 경우, DB 생성 시, ko_KR.euckr로 지정해 주시면 됩니다.
3. 기존에서 변경된 것이 없으시다면, 문자셋만 기존과 동일하게 맞추어 주시면 한글이 깨져나오는 증상은 없을 것입니다.
추가로 Connection String에 Charset을 지정하는 항목이 있으니 아래 매뉴얼을 참고하시어 추가해 보시는 것도 좋을 것 같습니다.
OLEDB 드라이버 연결 문자열 구성 : http://www.cubrid.org/manual/ko/9.2.0/api/oledb.html#connection-string