3

Doctrine を使用して Post オブジェクトをwp_postsWordpress で使用されるテーブルにマッピングしました。post_contentこの表で呼ばれる列は、 LONGTEXT4GB を含むことができる です。

これらのテーブルからオブジェクトをロードしようとすると、次のメッセージが表示されます。

致命的なエラー:行 165 の /home/rdinhani/renato/php-lib/DoctrineORM-2.2.2/Doctrine/DBAL/Driver/Mysqli/MysqliStatement.phpで 268435456 バイトの許容メモリ サイズが使い果たされました ( 4294967296バイトを割り当てようとしました)

これは、クエリを実行してオブジェクトをロードするときに発生します (現時点では、1 行のみが返されます)。

そのため、Doctrine はこの列内の値をロードするために 4GB を割り当てようとしますが、これによりメモリがオーバーフローします。この列には大きな値はありません。テキストはわずかです。

Doctrine または PHP には、列に 4GB を割り当てようとしたり、MySQL 列の最大制限を 2MB、10MB などのより小さい値に設定したりすることを回避できる構成がありますか?

4

1 に答える 1

3

mysqli ドライバーにはバグがあります。

mediumtext または longtext フィールドを選択しようとすると、フィールド全体のサイズ 2^32 バイト = 4294967296 を割り当てようとします。

解決策: PDO_Mysql に変更するか、medium/longtext フィールドを text フィールドに変更します。

于 2012-06-12T08:34:58.780 に答える