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 43
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
294 Windows 에서 사일런트 설치가 가능한가요... 2 거만쟁이 2009.08.12 23359
293 큐브리드DB와 비주얼베이직6.0을 연동하는 방법좀 부탁드려요 2 난똥배대 2009.08.10 12586
292 집합형 데이터 타입의 조회방법 문의 4 김현성 2009.08.08 8797
291 성능평가 관련 질문 & 로드(load) 2 지용 2009.08.07 8656
290 백업받은 파일로 다른 서버에 복구하기 4 ...... 2009.08.07 11304
289 demodb구동 실패 2 ...... 2009.08.06 8775
288 Cubrid 2008과 7.3의 차이? 1 secret dennis 2009.08.04 10
287 본 게시판 버그가 있는 듯... 2 메이커스 2009.08.03 9779
286 프로시저 사용시 1 경아 2009.08.03 10095
285 auto_increment 가 7.1 에서는 사용이 되지 않나요? 4 메이커스 2009.08.03 9727
284 테이블 삭제시 오류에 대하여... 2 메이커스 2009.08.01 10623
283 트랜잭션 관련 추가 문의입니다. 5 메이커스 2009.07.31 9152
282 Could not initialize class cubrid.jdbc.jci.UJCIManager 에러.ㅠ.ㅠ 2 박민호 2009.07.31 14030
281 Python 으로 데이터 일괄처리 하는 부분?? 3 천상천비 2009.07.31 10246
280 php 모듈 설치 에러입니다 2 터프키드 2009.07.30 9431
279 자바 프로시저 작성 문의입니다. 2 제발좀 2009.07.30 12313
278 날짜 계산관련 문의드립니다. 2 치푸 2009.07.29 23177
277 DB 페이지 스페이스 늘이는 방법 문의입니다. 1 secret 재홍 2009.07.29 7
276 [초보문의] 질의편집기 접속 오류 6 삽질중 2009.07.29 9742
275 서버컴 접속이 안되요 3 경아 2009.07.28 10308
Board Pagination Prev 1 ... 181 182 183 184 185 186 187 188 189 190 ... 200 Next
/ 200

Contact Cubrid

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