monetdb error 본문

Programming

monetdb error

halatha 2011. 8. 18. 04:00
2011/08/05 - [Programming] - monetdb

SQLException:str_cast:value too long for type (var)char([number])
http://bugs.monetdb.org/show_bug.cgi?id=2847
1. MSSQL의 table을 export해 txt로, 다시 monetdb의 table로 import하는 과정에서 발생
문제를 일으킨 field는 MSSQL에서는 nvarchar(n)으로, monetdb에서는 varchar(n)으로 선언
값을 실제로 읽어봐도 n을 넘는 값은 없었으나, 위의 exception은 계속 발생
검색을 통해 알아보니 nvarchar는 UTF8이고 변환후 ascii를 입력하는 과정에서 발생한 것으로 판단하여, monetdb의 varchar size를 n * 2로 바꾸도록 수정한 후 해결
2. version difference
(server 1) MonetDB 5 server v11.3.3 “Apr2011-SP1” 정상 동작
(server 2) MonetDB 5 server v11.3.7 “Apr2011-SP2” exception 발생
입력 데이터부터 프로그램 version까지 모든 것이 동일한 상황이라 혹시나 해서 server 2에서 11.3.3으로 다시 설치했더니 발생하지 않음
발생한 query는 다음과 같이 다른 여러 table과 join을 해서 새로운 table을 만드는 과정에서 case를 겹쳐서 사용한 부분에서 발생하였음

create table [other table name] as (
	select
		[original table name].[some field] as [some field],

		...
		case [original table name].OBJECT
			when '[something]' then
				case [original table name].[some field]
					when '[something]' then '[some value]'
					when '[something]' then '[some value]'
					else '[something]'
				end 
			when '[something]' then
				case [original table name].[some field] 
					when '[something]' then '[some value]'
					when '[something]' then '[some value]'
					else '[something]'
				end 
			...
		    else '[something]'
		end
			as [exception field],

	from [original table name]
		left outer join [other table name 1]
			on [original table name].[some field] = [other table name 1].[some field]
		left outer join [other table name 2]
			on [original table name].[some field] = [other table name 2].[some field]
		...
		left outer join [other table name n] [nick name n]
			on [original table name].[some field] = [nick name n].id
) with data;

monetdb unexpected symbol (\)
monetdb syntax error, unexpected sqlINT in:
script에서 어떤 directory의 file들을 읽어 table을 생성하고 data를 입력하는데,
create table string이 저장된 변수에 출력시 보기 좋으라고 \n\t을 넣었더니 발생.
제거한 후 발생하지 않음
Comments