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 42
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3874 ADO.NET에서 자바 저장함수 호출 2 kdknim21 2014.11.01 8420
3873 ADO.Net 사용중입니다. 상태확인 방법을 알고 싶습니다. 1 CUCUCUCU 2015.10.22 5691
3872 ADO.net Driver 변경 시 cascci.dll 로드할 수 없다는 오류 1 물병 2017.07.25 503
3871 ADO.net 또는 ODBC에 대한 질문입니다. 12 세스카 2012.03.20 13377
3870 ADO이용시 OLEDB Driver에러 2 flypig 2010.01.29 15619
3869 AIX에 CUBRID 설치 후 오류사항 문의 1 최명호 2015.06.02 7735
3868 ALTER 로 PK 여러 개 지정하고싶습니다 4 사탕구름 2021.07.21 831
3867 ARRAY 데이터 타입에 대한 SQL 질문 3 지용 2010.10.08 10246
3866 AUTO INCREASE 가 편집이 안됨 2 file 큐브리드어려워요 2022.02.08 268
3865 AUTO_INCREMENT 수동 증가 문의 2 cubrid초보 2021.08.19 727
3864 AUTO_INCREMENT 컬럼 이용시 2 hyperhand 2009.12.22 17649
3863 AVG 함수관련 질문드려요 1 구름마음 2013.06.10 13678
3862 Ado.NET : Cannot connect to CUBRID CAS 오류 2 websiter 2017.05.05 57857
3861 Ado.net. ExecuteNonQuery의 반환값이 항상 0 입니다. 2 모비23 2019.01.08 1479
3860 An IOException was caught during reading the inputstream 1 익명2 2015.11.26 6872
3859 An IOException was caught during reading the inputstream 1 익명2 2015.11.26 6829
3858 An IOException was caught during reading the inputstream. 오류 조치방법 좀 알려주세요. 1 ldev27 2019.10.29 314
3857 An internal error occurred during: "Fetching children of <DB명>". java.lang.NullPointerException 에러 4 ysh 2021.04.06 481
3856 Apm_setup7로 자동설치시 연동이 안되는데... 1 또랑 2010.11.08 8277
3855 Archive Log만으로 타임복구가 가능한가요? 4 핑핑크 2016.04.29 9820
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 200 Next
/ 200

Contact Cubrid

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