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 51
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
1215 JDBC 연결 시 Exception 발생합니다. 1 붕어생각 2022.01.05 397
1214 도커에서 설치시 접속 문의드립니다. 1 핫산 2023.03.07 397
1213 getting the schema data... 6 file 큐스코 2017.07.15 396
1212 SELECT 시 INDEX 를 타고 안타는 차이점 ? 2 Rega 2020.12.17 396
1211 ADO.NET 4.5 SQL query의 칼럼이름가져오기 1 allis 2017.09.06 396
1210 자바 펑션(프로시저) 등록시 클래스를 못찾습니다.(jar) (수정) 1 닐릴리 2019.02.14 396
1209 usegeneratedkeys 와 같은 기능 사용법 1 망나니개발자 2020.12.30 395
1208 JSP를 사용한 큐브리드와 AWS 웹서버 연동 방법 1 영토리 2018.05.09 395
1207 저장 프로시저 사용시 커넥션 관련 4 고늬 2018.04.11 394
1206 join문 in subquery 에러 질문드립니다. 1 미래주의자 2021.04.28 394
1205 unload 실행시 Empty component list in class 8 file 휴식 2019.10.22 393
1204 CUBRID 11.2 DBLink 설정 후 DBLink를 사용한 조회시 오류 5 file 리들러 2022.06.28 392
1203 메니져 실행이 안됩니다. 1 ufox 2020.02.01 391
1202 반올림 문의 1 무지초이 2017.08.11 391
1201 csql로 .sql가져오기 시, 한글 깨짐 발생 2 도우너19 2022.02.11 391
1200 큐브리드 (java - 전자정부프레임워크 - 마이바티스) 연동 에러 1 file 백수인 2022.04.15 391
1199 DB 이전 문제 문의 드립니다. 3 hoon 2017.11.15 390
1198 질문이 있습니다. 4 bjosbkjx 2019.03.14 390
1197 전체백업과 아키이브 파일 복원 문의 4 coolkkm 2018.01.26 389
1196 큐브리드 멀티코어 지원이 안되나요? 1 훈이아빠 2018.05.02 389
Board Pagination Prev 1 ... 135 136 137 138 139 140 141 142 143 144 ... 200 Next
/ 200

Contact Cubrid

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