Doctrine试图分配4GB?

时间:2012-06-06 18:39:07

标签: php mysql wordpress doctrine-orm

我将带有Doctrine的Post对象映射到Wordpress使用的wp_posts表。此表中名为post_content的列是LONGTEXT,可以包含4GB。

当我尝试从这些表中加载对象时,收到以下消息:

  

致命错误:允许的内存大小为268435456字节(已尝试   分配 4294967296 字节)   第165行/home/rdinhani/renato/php-lib/DoctrineORM-2.2.2/Doctrine/DBAL/Driver/Mysqli/MysqliStatement.php

执行查询以加载对象时会发生这种情况(此时,只返回一行)。

因此,Doctrine正在尝试分配4GB来加载此列中的值,但这会溢出内存。 此列中没有大值,只有少量文本。

Doctrine或PHP中有一些配置可以避免它尝试将4GB分配给列,或者可能将MySQL列中的最大限制设置为较小的值,如2MB,10MB等?

1 个答案:

答案 0 :(得分:3)

Mysqli司机has a bug

当尝试选择mediumtext或longtext字段时,它会尝试分配整个字段大小2 ^ 32 bytes = 4294967296。

解决方案:更改为PDO_Mysql或将medium / longtext字段更改为文本字段。