0

どういうわけか、GROUP_CONCAT は記事の 6 つの「ページ」(それぞれが TEXT として保存されている) を切り上げて、データを失うことなくそれらを 1 つの MEDIUMTEXT に放り込むことができますが、通常よりも長い 1 ページの記事がいくつかあります (ただし、それでも明らかに収まる) TEXT データ型内) を使用すると、大量のデータが失われます。何が起きているか知っている人はいますか?

元のクエリ:

SET group_concat_max_len = 16000000;
UPDATE Threads t SET t.Content = (SELECT GROUP_CONCAT(a.Content ORDER
BY a.PageID SEPARATOR '<!-- pagebreak -->') FROM MSarticlepages a
WHERE a.ArticleID = t.MSthreadID GROUP BY a.ArticleID);

無知な私を導いてくれてありがとう!

4

1 に答える 1

1

MySQL 5.0 のリファレンス マニュアル ( http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat ) には次のように記載されています。

MySQL 5.0.19 以降、group_concat_max_len が 512 より大きい場合を除き、GROUP_CONCAT() によって返される型は常に VARCHAR です。この場合、BLOB が返されます。(以前は、クエリに ORDER BY 句が含まれている場合にのみ、group_concat_max_len が 512 より大きい BLOB を返していました。)

このデータに基づくと、戻り値の型は MEDIUMTEXT ではなく BLOB になります。連結の合計が、BLOB の制限である 2^16 (65536 バイト) を超える可能性はありますか?

于 2009-02-10T07:01:16.387 に答える