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 52
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
1315 CUBRID.CONF 에 ORACLE_STYLE_EMPTY_STRING=YES 적용 시 TRIM 처리가 NULL 로 나오는 현상 문의 드려요 1 덴드로비움 2017.11.02 485
1314 CUBRID 저장 함수 사용 에러 문의드립니다. 3 viaxy 2017.11.01 484
1313 An internal error occurred during: "Fetching children of <DB명>". java.lang.NullPointerException 에러 4 ysh 2021.04.06 483
1312 문의드립니다. 3 팩트드림 2018.09.03 482
1311 insert ,update,delete 트리거 질문하겠습니다. 3 연습용 2021.10.06 482
1310 큐브리드 안드로이드연동 6 고래밥 2017.07.19 481
1309 리눅스 큐브리드를 윈도우 로컬로 복사하려는데여 2 머천다이 2018.07.02 479
1308 8.4.4ver 큐브리드 JDBC Driver Connection 인터페이스 미구현 문제 4 bikehee 2020.05.07 478
1307 JDBC를 활용해서 현재 접근권한이 부여된 유저리스트 혹은 전체 유져리스트를 얻는것이 가능한가요 3 file dator 2017.09.01 477
1306 cubrid jdbc 접근 문제 질문드립니다. 3 디벨로퍼 2019.10.07 476
1305 큐브리드 뷰에서 select 절에 NULL 은 안되나요? 1 덴드로비움 2017.09.25 475
1304 컬럼명 한글 및 csv 읽어서 연동 1 intern1910 2020.02.17 473
1303 Linux에 설치된 Cubrid 매니저 접속 속도 문제 3 mcwony 2018.04.10 472
1302 Overflow occurred in addition context 오류 1 엑팩 2017.11.29 471
1301 한국방송통신대학교 과제에 큐브리드 사용시 에러 질문 입니다. 2 file 대모산까치 2021.09.26 470
1300 JDBC 오류 메세지 발생 2 허접 2018.08.21 469
1299 Cubrid Linux용 ODBC가 없나요? 1 serapian 2018.08.28 469
1298 Cubrid ha master slave 확인 어떻게 하나요? 5 file Philip Park 2020.04.27 468
1297 질의어 질문 1 옥흐 2017.09.01 466
1296 CUBRID MANAGER 한글이 깨져서 나오고 입력할 때도 한글이 깨집니다. 4 qswaert 2018.04.12 465
Board Pagination Prev 1 ... 130 131 132 133 134 135 136 137 138 139 ... 200 Next
/ 200

Contact Cubrid

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