允许的内存大小为134217728字节耗尽(试图分配18063885380364533825字节)

时间:2014-09-04 12:15:15

标签: php odbc firebird ubuntu-14.04 memory-limit

我正在使用odbc_connect()连接Ubuntu 14.04上托管的脚本中的firebird数据库

查询必须只获取一行

$connect = odbc_connect("EXAMPLE", "GONE", "fishing");
$query = "SELECT REMITTONAME, REMITADDRESS, REMITCITY FROM PO WHERE NUM=10072";
$result = odbc_exec($connect, $query);

第3行出现错误,我调用odbc_exec($ connect,$ query)

Allowed memory size of 134217728 bytes exhausted (tried to allocate 18063885380364533825 bytes)

我很惊讶为什么odbc_exec函数试图分配15.66 exabyte?

php.ini中的内存限制设置为128M,我尝试将其增加到500M。

memory_limit = 500M

我还尝试将以下内容放在脚本的开头

ini_set('memory_limit', '-1');

在互联网上随处搜索,但没有解决我的问题,仍然试图找出原因。

任何帮助都将受到高度赞赏。

注意:

查询中选择的非列为空或空

1 个答案:

答案 0 :(得分:3)

您尝试分配

1.80638854 × 10^13 megabytes 500MB还不够;)我认为您的查询或odbc模块中存在错误。

  

在64位版本中,当其中一个返回字段为NULL时,odbc会崩溃。因此,解决方法是在重新查询时替换所有空字段。

     

select ifnull(tluser,'') as USER from database.table

这可以帮助您解决问题。您可以在此处获得更多信息:

Linux odbc Fatal error: Allowed memory size