2013-03-22 2 views
-1

VARCHAR2 필드가 10,000 바이트이고 시작 프로세스 중에 Zeos가 잘못된 데이터 크기로 충돌합니다. 그것을 밟아서, 문제의 크기, Zeos는 내가 동의 할 것 인 4,223,943가 무효이어야한다고 보여준다.Zeos 및/또는 메모로 충돌하는 SQLite

현재 SQLite는 메모에 255 바이트 이상을 저장하지 않으며 Zeos에서는 10,000 VARCHAR2를 갖지 않습니다.

5000으로 시도했지만 정상적으로 작동했지만 더 필요했습니다.

SQLite 이외의 것이 있습니까?

의견 및 제안 바랍니다. (D5 사용)

감사

+1

비슷한 테이블을 만드는 데 사용되는 DDL (CREATE TABLE') 문을 게시하려면 질문을 편집하십시오. "프로세스 시작", ** 정확한 ** 오류 메시지, "진행중인 **"및 정확히 "크기의 문제"가 참조하는 의미를 알면 도움이 될 것입니다. "SQLite 이외의 것을 봐야할까요?"또한 대답할만한 질문이 아닙니다. 여러분이 결정해야 할 것은 여러분의 결정입니다. 우리는 여러분이이 문제를 해결할 수 있도록 도와 줄 수는 있지만, 여러분이 분명히 말해 줄 때까지는 아닙니다. 그것입니다. :-) –

+0

@KenWhite 그냥 정보 : AFAIK SQLite3에서 CREATE TABLE 문은 일부 "[column affinity"] (http://www.sqlite.org/datatype3.html), 정확한 유형은 정의하지 않습니다. 실제로 SQLIte3 컬럼에 /로부터 어떤 종류의 데이터도 넣고 읽을 수 있으며 SQLite3에서 TEXT 컬럼에는 크기 제한이 없습니다 : CHAR 10, VARCHAR2 10000 또는 CLOB는 사실 TEXT, 즉 무제한 유니 코드 문자로 해석됩니다. 사실, 현대 하드웨어에서 고정 된 크기의 레코드를 사용하는 것은 공간 낭비와 성능 저하입니다 - 오늘날의 HW는 sa가 아닙니다 나 dBase/역설의 시간으로! –

답변

2

이것은 TDataSet의 및 그 하위 한계이고, = 8192 dsMaxStringSize 참조. (VAR) CHAR 데이터 유형은 사용할 수 없습니다. Sqlite 자체는 '무제한'길이의 ASCIIZ 문자열을 유지합니다.

+0

... OP가 열 유형을'ftMemo'로 설정하면 제대로 작동합니다. –

+0

@ pf1957 - 감사합니다. 실제 도움이 필요합니다! 이제 저는 5,000 명이 일한 이유와 10,000이 왜 성공하지 못했는지 이해합니다. 나는 5K에서 몰래 살피려고했지만 8192 덕분에 한계가 어디인지 알 수있었습니다. - Arnaud, SQLite는 ftMemo에 대해 텍스트를 255로 자릅니다. 나는 이미 그것을 시도했기 때문에 그것이 VARCHAR2를 시도한 이유입니다. 사용할 수있는 데이터 유형을 살펴보면 BLOB_TEXT가 있습니다. 텍스트 문서를 저장하려고합니다. 도움을 주신 분들께 감사드립니다. :) 이제 Zeos가 BLOB_TEXT를 처리하는지 알아야합니다. – user2175495

+0

BLOB_TEXT로 변경하면 Zeos가 BLOB 함수를 투명하게 처리하고 DBMemo에 깨끗한 텍스트를 표시하여 레코드를 읽습니다. 새 레코드를 저장하는 것과 동일하게 BLOB 형식으로의 모든 변환을 처리했습니다. – user2175495