Background Image

FORUM

조회 수 21478 추천 수 0 댓글 4
?

단축키

Prev이전 문서

Next다음 문서

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

좋은 데이타 베이스 프로그램을 공개해 주셔서 감사합니다. ^^;

큐브리드와 php를 이용하여 게시판 프로그램을 작성하고 있는 중 잘 모르는 부분이 생겨 질문을 올립니다.

본문 내용이 들어갈 필드를  memo : varchar(65535) 로 설정 하였는데 이 부분에 들어갈 데이타가 65535 글자가 넘어가지 않음에도 불구 하고 데이터가 인서트 되지 않고 "Token length is too long"라는 오류 메세지를 발생합니다.
혹시나 하는 마음에 memo 필드의 속성을 varchar(1073741823)으로 설정하고 웹이 아닌 큐브리드 매니저 프로그램을 이용하여 같은 데이를 입력하였으나 역시 같은 오류 메세지가 발생하였습니다.


사용 테이블 구조.

create table bbs_test (
bbs_no int auto_increment primary key,
headnum int default 0 not null,                  
arrangenum int default 0 not null,               
bbs_depth int default 0 not null,          
ismember int default 0 not null,               
islevel int default 10 not null,               
memo VARCHAR,                            
ip varchar(15),                                       
boardname varchar(30),                                  
userid varchar(20),         
nickname varchar(20),        
password varchar(20),                              
name varchar(20) not null,                       
homepage varchar(100),                   
email varchar(50),                          
subject varchar(100) not null,                   
use_html varchar(1) default '0',                          
reply_mail varchar(1) default '0',                    
category varchar(11) default '10000' ,    
is_secret varchar(1) default '0' ,
userenv varchar(100) , 
sitelink1 varchar(255),       
sitelink2 varchar(255),       
file_name1 varchar(255),    
file_name2 varchar(255),     
s_file_name1 varchar(255),      
s_file_name2 varchar(255),                         
file_size1 varchar(20) default '0',                    
file_size2 varchar(20) default '0',                    
download1 int default 0 ,                
download2 int default 0 ,                
mod_date date,
mod_time time,
reg_date date,
reg_time time,
hit int default 0 ,                    
vote int default 0 ,                     
total_comment int default 0 ,           
notice varchar(1) default '0' ,           
opt1 varchar(10),                                    
opt2 varchar(10) 
)

사용 쿼리
 insert into bbs_test ( headnum, arrangenum, bbs_depth, ismember, islevel, memo, ip, boardname, userid, nickname, password, name, homepage, email, subject, use_html, reply_mail, category, is_secret, userenv, sitelink1, sitelink2, file_name1, file_name2, s_file_name1, s_file_name2, file_size1, file_size2, reg_date, reg_time, mod_date, mod_time, notice, opt1, opt2 )
values ( -2, 0, 0, 9, 1, '
안녕하세요 반갑습니다.안녕하세요 반갑습니다.안녕하세요 반갑습니다.안녕하세요 반갑습니다.안녕하세요 반갑습니다.
', '210.106.210.152', 'test', 'seniya', '관리자', '1111', '김우람', 'www.seniya.pe.kr', 'seniya2@gmail.com', '111', '1', '', '010000', '', 'WinXP_Firefox(3.0)', '', '', '', '', '', '', '', '', SYS_DATE, SYS_TIME, SYS_DATE, SYS_TIME, '', '', '' );

" 안녕하세요 반갑습니다.안녕하세요 반갑습니다.안녕하세요 반갑습니다.안녕하세요 반갑습니다.안녕하세요 반갑습니다. "  <<-- 위부분을 152번 반복하여 쓰면 에러가 발생하고 그 이하면 인서트 됩니다.



  • ?
    김동수 2009.01.10 03:21
    위와 같은 현상이 발생 하는 이유는, 내부적으로 하나의 토큰에 대해 17000byte 의 길이 제한이 있기 때문입니다.
    해결법은 긴 길이의 문자열(텍스트 데이터 등)을 입력 할 때 17000byte 를 넘지 않도록 '안녕하세요...(생략)...반갑습니다.' + '안녕하세요...(생략)...반갑습니다.' + ..... 형태로 적절히 잘라서 입력 하시면 정상적으로 insert를 하실 수 있습니다.
  • ?
    김우람 2009.01.10 03:48

    답변 감사합니다.
    대략 데이타 양을 비교해 보니 얼추 그 근처에서 에러가 발생하는 것으로 보아 김동수님의 해결방법을 따르면 해결 될듯 합니다.

    죄송하지만 다시 질문하나 더 드리겠습니다.
    김동수님이 말씀하신 부분은 sql 구문으로 처리되는 건지요?
    로직을 어떻게 바꿔야 할지 잘 모르겠네요. 참고 할만한 문건이나 예시가 있으면 부탁 좀 드리겠습니다.

  • ?
    김동수 2009.01.10 04:21
    php응용에서 정확히 어떻게 처리 하셨는지는 본문만으로는 파악하기 힘들지만, 위와 같은 현상을 발견하신 것으로 보아, 아마도 변수 하나에 전체 쿼리를 집어 넣어서 데이터가 전부 들어간 쿼리를 수행 하셨다고 생각 됩니다..
    쿼리를 수행 할 때, 데이터를 넣은 쿼리를 그대로 사용 하지 마시고, prepare 후 데이터를 bind하는 형식으로 사용하시면 위와 같이 토큰의 크기를 제한받지 않으며, 원하시는 결과를 얻을 수 있을 것입니다.

    다음의 예제 코드를 참고 하시기 바랍니다.
    $sql = "insert into test (vc1, vc2, vc3) values( ? , ? , ? );";
    $stmt = cubrid_prepare($con, $sql);

    cubrid_bind($stmt, 1, $data1);
    cubrid_bind($stmt, 2, $data2);
    cubrid_bind($stmt, 3, $data3);

    $result = cubrid_execute($stmt);

  • ?
    김우람 2009.01.10 18:19
    답변 정말 감사합니다~ ^^;
    잘 몰랐던 부분이었는데 좋은걸 배웠습니다. 감사합니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 47
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
1154 큐브리드용 그누보드 4.31.08 버전을 구하고 싶습니다 2 유니콘 2012.02.07 8713
1153 MS-SQL의 Stored Procedure를 Cubrid로 변환 가능할런지? 2 강나루소나무 2012.02.07 12656
1152 매니저에서 demodb가 시작하자마자 정지되는 이유는? 2 강나루소나무 2012.02.07 7797
1151 alter로 테이블 구조 변경 3 장이 2012.02.06 11534
1150 bit형 데이터타입 관련 2 소라게 2012.01.27 10671
1149 Replication, 서버 이중화, HA 2 승준77 2012.01.26 23263
1148 oracle에 count(*) over() 쿼리를 대채할 쿼리가 있을까요? 2 라분 2012.01.26 23655
1147 영문검색 시 대소문자 구분 문제 6 재권 2012.01.25 14810
1146 큐브리드 2008 patch2 깔고 2 겸손한플머 2012.01.24 8945
1145 MSSQL과의 성능에 대한 비교를 알고 싶습니다 1 secret 로닥 2012.01.18 17
1144 checkdb(데이터베이스검사) 관련 질문드립니다... 2 반짝이 2012.01.10 12000
1143 HA구성에서 백업시 보관 로그 제거(lgar) 관련 문의드립니다. 2 반짝이 2012.01.09 24631
1142 CUBRID Migration Toolkit 사용시 에러 관련사항입니다. 3 file 그가가가 2012.01.03 19049
1141 asp.net 윈도우즈 설치 문의 3 shblitz 2011.12.29 14673
1140 HA관련 추가 문제 답변부탁립니다... 3 file 반짝이 2011.12.29 24163
1139 HA로 운영중인 CUBRID 버전업 방법과 INDEX 문제 질문드립니다. 11 secret 반짝이 2011.12.28 61
1138 접속제한 설정 질문드립니다 2 유니콘 2011.12.24 12721
1137 큐브리드 백업 진행시 오류 2 제이씨씨 2011.12.23 17340
1136 jdbc 사용중 테이블 데이터 입력문제 2 Dezert 2011.12.22 20502
1135 업그레이드 후 쿼리 수행시간이 길어졌습니다. 4 secret 노랑배 2011.12.22 12
Board Pagination Prev 1 ... 138 139 140 141 142 143 144 145 146 147 ... 200 Next
/ 200

Contact Cubrid

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