我正在使用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 EB?
我在php.ini中的内存限制设置为128M,并试图将其增加到500M。
memory_limit = 500M
我还试着在我的脚本开始时放在下面
ini_set('memory_limit', '-1');
在互联网上到处搜索,但都没有解决我的问题,仍在努力找出原因。
如有任何帮助,我们将不胜感激。
注意:
查询中选择的非列为null或空
您尝试分配
1.80638854 × 10^13 megabytes
500MB不够;)我认为您的Query或odbc模块中有一个错误。
在64位版本中,当其中一个返回字段为NULL时,odbc会崩溃。因此,解决方法是在检索查询时替换所有空字段。
select ifnull(tluser,'') as USER from database.table
这应该能帮助你解决问题。您可以在这里获得更多信息:
Linux odbc致命错误:允许的内存大小