2013-03-22 48 views
-1

我有一个10,000字节的VARCHAR2字段,并在启动过程中Zeos崩溃与无效的数据大小。通过它,尺寸问题,Zeos显示4,223,943我同意,应该是无效的。Zeos和/或SQLite与备忘录崩溃

目前看来,SQLite将不会在备忘录中存储超过255个字节,现在Zeos不会让我有10,000个VARCHAR2。

我试了5000,它工作正常,但我需要更多。

我应该看看SQLite以外的东西吗?

请注意思考和建议。

感谢(使用D5)

+1

请编辑您的问题以发布用于创建类似表的DDL('CREATE TABLE')语句。如果我们知道“启动过程”的含义,获得的**精确**错误消息,以及“正在逐步通过**”以及“正在讨论的大小”参考的内容,这将会很有帮助。 “我应该看看SQLite之外的东西吗?”在这里也不是一个可以回答的问题 - 你应该看看你的决定是什么,我们可以试着帮助你解决这个问题,但是直到你清楚地告诉我们什么是什么它是第一个:-) – 2013-03-22 02:30:47

+0

@KenWhite仅供参考:SQLite3中的AFAIK,CREATE TABLE语句只定义了一些[“列关联”](http://www.sqlite.org/datatype3.html),没有确切的类型你可以在SQLite3列中放入和读取任何类型的数据,而在SQLite3中,TEXT列没有大小限制:CHAR 10,VARCHAR2 10000或CLOB实际上被解释为TEXT,即无限制的Unicode字符。实际上,在现代硬件中,使用固定大小的记录是空间浪费和性能损失 - 今天的硬件并不是sa我作为dBase /悖论的时间! – 2013-03-22 08:11:49

回答

2

这是TDataSet的及其后代的限制,见dsMaxStringSize = 8192。您不能使用(VAR)CHAR数据类型。 Sqlite本身保持字符串为'无限'长度的ASCIIZ。

+0

...所以如果OP将列类型设置为“ftMemo”,它应该可以工作。 – 2013-03-22 08:13:08

+0

@ pf1957 - 谢谢,一些实际的帮助!现在我明白为什么5000人工作了,10,000人没有工作。我想从5K偷偷摸摸地看,但是感谢你的8192,我知道限制在哪里。 - Arnaud,SQLite在255处截断了一个ftMemo的文本。我已经尝试过,所以我尝试了VARCHAR2。仔细查看可用的数据类型,我猜测是BLOB_TEXT是我想要存储文本文档的。 - 感谢那些帮助过的人。 :)现在我需要找出Zeos是否会处理BLOB_TEXT。 – user2175495 2013-03-22 13:06:13

+0

将它更改为BLOB_TEXT解决了这个问题,Zeos透明地处理了BLOB函数,并在读取记录的DBMemo中显示干净的文本。在保存新记录时也是如此,它处理了所有转换为BLOB格式。 – user2175495 2013-03-22 22:11:31