ColdFusion查询是否有字符限制?

4

我有一个MySQL数据库,其中一列的数据类型是LONGTEXT。它在记录中有85,504个字符。当我使用ColdFusion查询时,只返回了前64,001个字符。ColdFusion是否限制了64,001个字符?

selectTest = new query();
selectTest.setDatasource("myDB");
selectTest.setName("selectTest");
selectTest.addParam(name="MyID",            value="#arguments.data.MyID#",          cfsqltype="cf_sql_integer");
result = selectTest.execute(sql="SELECT MyLongText FROM MyTable WHERE ID = :MyID");
rs = result.getResult();
return rs.MyLongText[1];

这是我的函数,仅返回前64,001个字符。
谢谢。

你确定这是意外选择的 LONGTEXT 而不是 TEXT 吗?后者有很多限制。64,001 是一个奇怪的值,我认为应该是 65,535。ColdFusion 有 POST 限制吗? - tadman
1
可能是使用CFQuery检索长文本(CLOB)的重复问题。 - SOS
是的,这是LONGTEXT。当我从MySQL Workbench选择数据时,它会返回所有内容,但在ColdFusion SQL中只返回64,001个字符。 - Code Guy
是的,无论你是否意识到,你正在谈论 CLOB。当你尝试它时发生了什么? - SOS
1个回答

9
ColdFusion使用JDBC驱动程序从SQL服务器检索的数据进行缓冲。默认情况下,此缓冲区限制为64k字节。如果您需要检索更大的数据块,则必须增加缓冲区。
可以通过允许完全的CLOB/BLOB检索(提示:LONGTEXT被视为此类)或通过手动设置较高的值来增加缓冲区中的最大字节数来完成增加缓冲区的操作。
这两个操作都可以在ColdFusion的数据源管理(管理员面板)中完成。
编辑:Ageax发布的链接告诉您启用完整的CLOB检索的步骤:使用CFQuery检索长文本(CLOB)

我使用了这种方法将其推到1MB。但是我不得不为此创建一个单独的数据源。如果我让每个查询都这样做,我开始收到奇怪的错误。 - James A Mohler
@JamesAMohler 你遇到了什么错误?想知道我是否有相关的问题... - beloitdavisja
这将导致系统普遍变慢,超时会发生。在压力下,系统无法支撑。请记住,这是在CF 9上很久以前的情况。90%的代码可以使用常规数据源。这大约占了99.9%的流量。我认为CF是这样工作的。当您运行CFQuery时,在结果出现之前会分配内存。如果结果适合,一切都很好。如果结果不适合,则会出现奇怪的错误。但是,如果您不断增加查询的内存,就会分配大量内存。如果设置不正确,CF似乎比释放更快地分配内存。 - James A Mohler
除非你正在传输大量数据,否则64k就足够了。 - James A Mohler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接