我将带有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等?
答案 0 :(得分:3)
Mysqli司机has a bug。
当尝试选择mediumtext或longtext字段时,它会尝试分配整个字段大小2 ^ 32 bytes = 4294967296。
解决方案:更改为PDO_Mysql或将medium / longtext字段更改为文本字段。